High performance interconnect physical layer

ABSTRACT

A set of training sequences is generated, each training sequence to include a respective training sequence header, and the training sequence header is to be DC-balanced over the set of training sequences. The set of training sequences can be combined with electric ordered sets to form supersequences for use in such tasks as link adaptation, link state transitions, byte lock, deskew, and other tasks.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation (and claims the benefit of priorityunder 35 U.S.C. § 120) of U.S. patent application Ser. No. 14/538,871,filed on Nov. 12, 2014 and entitled HIGH PERFORMANCE INTERCONNECTPHYSICAL LAYER, which application is a continuation of U.S. patentapplication Ser. No. 13/976,919, with an effective filing date of Mar.15, 2013 and an U.S. 371 filing date filed Aug. 28, 2013, whichapplication is a national stage application under 35 U.S.C. § 371 of PCTInternational Application Serial No. PCT/US2013/032699, filed on Mar.15, 2013 and entitled HIGH PERFORMANCE INTERCONNECT PHYSICAL LAYER,which application claims the benefit of priority to U.S. ProvisionalPatent Application Ser. No. 61/717,091 filed on Oct. 22, 2012 andentitled METHOD, APPARATUS, SYSTEM FOR A HIGH PERFORMANCE INTERCONNECTARCHITECTURE. The disclosures of the prior applications are consideredpart of and are hereby incorporated by reference in their entirety inthe disclosure of this application.

FIELD

The present disclosure relates in general to the field of computerdevelopment, and more specifically, to software development involvingcoordination of mutually-dependent constrained systems.

BACKGROUND

Advances in semi-conductor processing and logic design have permitted anincrease in the amount of logic that may be present on integratedcircuit devices. As a corollary, computer system configurations haveevolved from a single or multiple integrated circuits in a system tomultiple cores, multiple hardware threads, and multiple logicalprocessors present on individual integrated circuits, as well as otherinterfaces integrated within such processors. A processor or integratedcircuit typically comprises a single physical processor die, where theprocessor die may include any number of cores, hardware threads, logicalprocessors, interfaces, memory, controller hubs, etc.

As a result of the greater ability to fit more processing power insmaller packages, smaller computing devices have increased inpopularity. Smartphones, tablets, ultrathin notebooks, and other userequipment have grown exponentially. However, these smaller devices arereliant on servers both for data storage and complex processing thatexceeds the form factor. Consequently, the demand in thehigh-performance computing market (i.e. server space) has alsoincreased. For instance, in modern servers, there is typically not onlya single processor with multiple cores, but also multiple physicalprocessors (also referred to as multiple sockets) to increase thecomputing power. But as the processing power grows along with the numberof devices in a computing system, the communication between sockets andother devices becomes more critical.

In fact, interconnects have grown from more traditional multi-drop busesthat primarily handled electrical communications to full blowninterconnect architectures that facilitate fast communication.Unfortunately, as the demand for future processors to consume at evenhigher-rates corresponding demand is placed on the capabilities ofexisting interconnect architectures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a simplified block diagram of a system including aserial point-to-point interconnect to connect I/O devices in a computersystem in accordance with one embodiment;

FIG. 2 illustrates a simplified block diagram of a layered protocolstack in accordance with one embodiment;

FIG. 3 illustrates an embodiment of a transaction descriptor.

FIG. 4 illustrates an embodiment of a serial point-to-point link.

FIG. 5 illustrates embodiments of potential High PerformanceInterconnect (HPI) system configurations.

FIG. 6 illustrates an embodiment of a layered protocol stack associatedwith HPI.

FIG. 7 illustrates a representation of an example state machine.

FIG. 8 illustrates example control supersequences.

FIG. 9 illustrates a flow diagram representing an example entry into apartial width transmitting state.

FIG. 10 illustrates an example training sequence.

FIG. 11 illustrates an embodiment of a block diagram for a computingsystem including a multicore processor.

FIG. 12 illustrates another embodiment of a block diagram for acomputing system including a multicore processor.

FIG. 13 illustrates an embodiment of a block diagram for a processor.

FIG. 14 illustrates another embodiment of a block diagram for acomputing system including a processor.

FIG. 15 illustrates an embodiment of a block for a computing systemincluding multiple processor sockets.

FIG. 16 illustrates another embodiment of a block diagram for acomputing system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth,such as examples of specific types of processors and systemconfigurations, specific hardware structures, specific architectural andmicro architectural details, specific register configurations, specificinstruction types, specific system components, specific processorpipeline stages, specific interconnect layers, specificpacket/transaction configurations, specific transaction names, specificprotocol exchanges, specific link widths, specific implementations, andoperation etc. in order to provide a thorough understanding of thepresent invention. It may be apparent, however, to one skilled in theart that these specific details need not necessarily be employed topractice the subject matter of the present disclosure. In otherinstances, well detailed description of known components or methods hasbeen avoided, such as specific and alternative processor architectures,specific logic circuits/code for described algorithms, specific firmwarecode, low-level interconnect operation, specific logic configurations,specific manufacturing techniques and materials, specific compilerimplementations, specific expression of algorithms in code, specificpower down and gating techniques/logic and other specific operationaldetails of computer system in order to avoid unnecessarily obscuring thepresent disclosure.

Although the following embodiments may be described with reference toenergy conservation, energy efficiency, processing efficiency, and so onin specific integrated circuits, such as in computing platforms ormicroprocessors, other embodiments are applicable to other types ofintegrated circuits and logic devices. Similar techniques and teachingsof embodiments described herein may be applied to other types ofcircuits or semiconductor devices that may also benefit from suchfeatures. For example, the disclosed embodiments are not limited toserver computer system, desktop computer systems, laptops, Ultrabooks™,but may be also used in other devices, such as handheld devices,smartphones, tablets, other thin notebooks, systems on a chip (SOC)devices, and embedded applications. Some examples of handheld devicesinclude cellular phones, Internet protocol devices, digital cameras,personal digital assistants (PDAs), and handheld PCs. Here, similartechniques for a high-performance interconnect may be applied toincrease performance (or even save power) in a low power interconnect.Embedded applications typically include a microcontroller, a digitalsignal processor (DSP), a system on a chip, network computers (NetPC),set-top boxes, network hubs, wide area network (WAN) switches, or anyother system that can perform the functions and operations taught below.Moreover, the apparatus', methods, and systems described herein are notlimited to physical computing devices, but may also relate to softwareoptimizations for energy conservation and efficiency. As may becomereadily apparent in the description below, the embodiments of methods,apparatus', and systems described herein (whether in reference tohardware, firmware, software, or a combination thereof) may beconsidered vital to a “green technology” future balanced withperformance considerations.

As computing systems are advancing, the components therein are becomingmore complex. The interconnect architecture to couple and communicatebetween the components has also increased in complexity to ensurebandwidth demand is met for optimal component operation. Furthermore,different market segments demand different aspects of interconnectarchitectures to suit the respective market. For example, serversrequire higher performance, while the mobile ecosystem is sometimes ableto sacrifice overall performance for power savings. Yet, it is asingular purpose of most fabrics to provide highest possible performancewith maximum power saving. Further, a variety of different interconnectscan potentially benefit from subject matter described herein.

The Peripheral Component Interconnect (PCI) Express (PCIe) interconnectfabric architecture and QuickPath Interconnect (QPI) fabricarchitecture, among other examples, can potentially be improvedaccording to one or more principles described herein, among otherexamples. For instance, a primary goal of PCIe is to enable componentsand devices from different vendors to inter-operate in an openarchitecture, spanning multiple market segments; Clients (Desktops andMobile), Servers (Standard and Enterprise), and Embedded andCommunication devices. PCI Express is a high performance, generalpurpose I/O interconnect defined for a wide variety of future computingand communication platforms. Some PCI attributes, such as its usagemodel, load-store architecture, and software interfaces, have beenmaintained through its revisions, whereas previous parallel busimplementations have been replaced by a highly scalable, fully serialinterface. The more recent versions of PCI Express take advantage ofadvances in point-to-point interconnects, Switch-based technology, andpacketized protocol to deliver new levels of performance and features.Power Management, Quality Of Service (QoS), Hot-Plug/Hot-Swap support,Data Integrity, and Error Handling are among some of the advancedfeatures supported by PCI Express. Although the primary discussionherein is in reference to a new high-performance interconnect (HPI)architecture, aspects of the invention described herein may be appliedto other interconnect architectures, such as a PCIe-compliantarchitecture, a QPI-compliant architecture, a MIPI compliantarchitecture, a high-performance architecture, or other knowninterconnect architecture.

Referring to FIG. 1, an embodiment of a fabric composed ofpoint-to-point Links that interconnect a set of components isillustrated. System 100 includes processor 105 and system memory 110coupled to controller hub 115. Processor 105 can include any processingelement, such as a microprocessor, a host processor, an embeddedprocessor, a co-processor, or other processor. Processor 105 is coupledto controller hub 115 through front-side bus (FSB) 106. In oneembodiment, FSB 106 is a serial point-to-point interconnect as describedbelow. In another embodiment, link 106 includes a serial, differentialinterconnect architecture that is compliant with different interconnectstandard.

System memory 110 includes any memory device, such as random accessmemory (RAM), non-volatile (NV) memory, or other memory accessible bydevices in system 100. System memory 110 is coupled to controller hub115 through memory interface 116. Examples of a memory interface includea double-data rate (DDR) memory interface, a dual-channel DDR memoryinterface, and a dynamic RAM (DRAM) memory interface.

In one embodiment, controller hub 115 can include a root hub, rootcomplex, or root controller, such as in a PCIe interconnectionhierarchy. Examples of controller hub 115 include a chipset, a memorycontroller hub (MCH), a northbridge, an interconnect controller hub(ICH) a southbridge, and a root controller/hub. Often the term chipsetrefers to two physically separate controller hubs, e.g., a memorycontroller hub (MCH) coupled to an interconnect controller hub (ICH).Note that current systems often include the MCH integrated withprocessor 105, while controller 115 is to communicate with I/O devices,in a similar manner as described below. In some embodiments,peer-to-peer routing is optionally supported through root complex 115.

Here, controller hub 115 is coupled to switch/bridge 120 through seriallink 119. Input/output modules 117 and 121, which may also be referredto as interfaces/ports 117 and 121, can include/implement a layeredprotocol stack to provide communication between controller hub 115 andswitch 120. In one embodiment, multiple devices are capable of beingcoupled to switch 120.

Switch/bridge 120 routes packets/messages from device 125 upstream, i.e.up a hierarchy towards a root complex, to controller hub 115 anddownstream, i.e. down a hierarchy away from a root controller, fromprocessor 105 or system memory 110 to device 125. Switch 120, in oneembodiment, is referred to as a logical assembly of multiple virtualPCI-to-PCI bridge devices. Device 125 includes any internal or externaldevice or component to be coupled to an electronic system, such as anI/O device, a Network Interface Controller (NIC), an add-in card, anaudio processor, a network processor, a hard-drive, a storage device, aCD/DVD ROM, a monitor, a printer, a mouse, a keyboard, a router, aportable storage device, a Firewire device, a Universal Serial Bus (USB)device, a scanner, and other input/output devices. Often in the PCIevernacular, such as device, is referred to as an endpoint. Although notspecifically shown, device 125 may include a bridge (e.g., a PCIe toPCI/PCI-X bridge) to support legacy or other versions of devices orinterconnect fabrics supported by such devices.

Graphics accelerator 130 can also be coupled to controller hub 115through serial link 132. In one embodiment, graphics accelerator 130 iscoupled to an MCH, which is coupled to an ICH. Switch 120, andaccordingly I/O device 125, is then coupled to the ICH. I/O modules 131and 118 are also to implement a layered protocol stack to communicatebetween graphics accelerator 130 and controller hub 115. Similar to theMCH discussion above, a graphics controller or the graphics accelerator130 itself may be integrated in processor 105.

Turning to FIG. 2 an embodiment of a layered protocol stack isillustrated. Layered protocol stack 200 can includes any form of alayered communication stack, such as a QPI stack, a PCIe stack, a nextgeneration high performance computing interconnect (HPI) stack, or otherlayered stack. In one embodiment, protocol stack 200 can includetransaction layer 205, link layer 210, and physical layer 220. Aninterface, such as interfaces 117, 118, 121, 122, 126, and 131 in FIG.1, may be represented as communication protocol stack 200.Representation as a communication protocol stack may also be referred toas a module or interface implementing/including a protocol stack.

Packets can be used to communicate information between components.Packets can be formed in the Transaction Layer 205 and Data Link Layer210 to carry the information from the transmitting component to thereceiving component. As the transmitted packets flow through the otherlayers, they are extended with additional information used to handlepackets at those layers. At the receiving side the reverse processoccurs and packets get transformed from their Physical Layer 220representation to the Data Link Layer 210 representation and finally(for Transaction Layer Packets) to the form that can be processed by theTransaction Layer 205 of the receiving device.

In one embodiment, transaction layer 205 can provide an interfacebetween a device's processing core and the interconnect architecture,such as Data Link Layer 210 and Physical Layer 220. In this regard, aprimary responsibility of the transaction layer 205 can include theassembly and disassembly of packets (i.e., transaction layer packets, orTLPs). The translation layer 205 can also manage credit-based flowcontrol for TLPs. In some implementations, split transactions can beutilized, i.e., transactions with request and response separated bytime, allowing a link to carry other traffic while the target devicegathers data for the response, among other examples.

Credit-based flow control can be used to realize virtual channels andnetworks utilizing the interconnect fabric. In one example, a device canadvertise an initial amount of credits for each of the receive buffersin Transaction Layer 205. An external device at the opposite end of thelink, such as controller hub 115 in FIG. 1, can count the number ofcredits consumed by each TLP. A transaction may be transmitted if thetransaction does not exceed a credit limit. Upon receiving a response anamount of credit is restored. One example of an advantage of such acredit scheme is that the latency of credit return does not affectperformance, provided that the credit limit is not encountered, amongother potential advantages.

In one embodiment, four transaction address spaces can include aconfiguration address space, a memory address space, an input/outputaddress space, and a message address space. Memory space transactionsinclude one or more of read requests and write requests to transfer datato/from a memory-mapped location. In one embodiment, memory spacetransactions are capable of using two different address formats, e.g., ashort address format, such as a 32-bit address, or a long addressformat, such as 64-bit address. Configuration space transactions can beused to access configuration space of various devices connected to theinterconnect. Transactions to the configuration space can include readrequests and write requests. Message space transactions (or, simplymessages) can also be defined to support in-band communication betweeninterconnect agents. Therefore, in one example embodiment, transactionlayer 205 can assemble packet header/payload 206.

Quickly referring to FIG. 3, an example embodiment of a transactionlayer packet descriptor is illustrated. In one embodiment, transactiondescriptor 300 can be a mechanism for carrying transaction information.In this regard, transaction descriptor 300 supports identification oftransactions in a system. Other potential uses include trackingmodifications of default transaction ordering and association oftransaction with channels. For instance, transaction descriptor 300 caninclude global identifier field 302, attributes field 304 and channelidentifier field 306. In the illustrated example, global identifierfield 302 is depicted comprising local transaction identifier field 308and source identifier field 310. In one embodiment, global transactionidentifier 302 is unique for all outstanding requests.

According to one implementation, local transaction identifier field 308is a field generated by a requesting agent, and can be unique for alloutstanding requests that require a completion for that requestingagent. Furthermore, in this example, source identifier 310 uniquelyidentifies the requestor agent within an interconnect hierarchy.Accordingly, together with source ID 310, local transaction identifier308 field provides global identification of a transaction within ahierarchy domain.

Attributes field 304 specifies characteristics and relationships of thetransaction. In this regard, attributes field 304 is potentially used toprovide additional information that allows modification of the defaulthandling of transactions. In one embodiment, attributes field 304includes priority field 312, reserved field 314, ordering field 316, andno-snoop field 318. Here, priority sub-field 312 may be modified by aninitiator to assign a priority to the transaction. Reserved attributefield 314 is left reserved for future, or vendor-defined usage. Possibleusage models using priority or security attributes may be implementedusing the reserved attribute field.

In this example, ordering attribute field 316 is used to supply optionalinformation conveying the type of ordering that may modify defaultordering rules. According to one example implementation, an orderingattribute of “0” denotes default ordering rules are to apply, wherein anordering attribute of “1” denotes relaxed ordering, wherein writes canpass writes in the same direction, and read completions can pass writesin the same direction. Snoop attribute field 318 is utilized todetermine if transactions are snooped. As shown, channel ID Field 306identifies a channel that a transaction is associated with.

Returning to the discussion of FIG. 2, a Link layer 210, also referredto as data link layer 210, can act as an intermediate stage betweentransaction layer 205 and the physical layer 220. In one embodiment, aresponsibility of the data link layer 210 is providing a reliablemechanism for exchanging Transaction Layer Packets (TLPs) between twocomponents on a link. One side of the Data Link Layer 210 accepts TLPsassembled by the Transaction Layer 205, applies packet sequenceidentifier 211, i.e. an identification number or packet number,calculates and applies an error detection code, i.e. CRC 212, andsubmits the modified TLPs to the Physical Layer 220 for transmissionacross a physical to an external device.

In one example, physical layer 220 includes logical sub block 221 andelectrical sub-block 222 to physically transmit a packet to an externaldevice. Here, logical sub-block 221 is responsible for the “digital”functions of Physical Layer 221. In this regard, the logical sub-blockcan include a transmit section to prepare outgoing information fortransmission by physical sub-block 222, and a receiver section toidentify and prepare received information before passing it to the LinkLayer 210.

Physical block 222 includes a transmitter and a receiver. Thetransmitter is supplied by logical sub-block 221 with symbols, which thetransmitter serializes and transmits onto to an external device. Thereceiver is supplied with serialized symbols from an external device andtransforms the received signals into a bit-stream. The bit-stream isde-serialized and supplied to logical sub-block 221. In one exampleembodiment, an 8b/10b transmission code is employed, where ten-bitsymbols are transmitted/received. Here, special symbols are used toframe a packet with frames 223. In addition, in one example, thereceiver also provides a symbol clock recovered from the incoming serialstream.

As stated above, although transaction layer 205, link layer 210, andphysical layer 220 are discussed in reference to a specific embodimentof a protocol stack (such as a PCIe protocol stack), a layered protocolstack is not so limited. In fact, any layered protocol may beincluded/implemented and adopt features discussed herein. As an example,a port/interface that is represented as a layered protocol can include:(1) a first layer to assemble packets, i.e. a transaction layer; asecond layer to sequence packets, i.e. a link layer; and a third layerto transmit the packets, i.e. a physical layer. As a specific example, ahigh performance interconnect layered protocol, as described herein, isutilized.

Referring next to FIG. 4, an example embodiment of a serial point topoint fabric is illustrated. A serial point-to-point link can includeany transmission path for transmitting serial data. In the embodimentshown, a link can include two, low-voltage, differentially driven signalpairs: a transmit pair 406/411 and a receive pair 412/407. Accordingly,device 405 includes transmission logic 406 to transmit data to device410 and receiving logic 407 to receive data from device 410. In otherwords, two transmitting paths, i.e. paths 416 and 417, and two receivingpaths, i.e. paths 418 and 419, are included in some implementations of alink.

A transmission path refers to any path for transmitting data, such as atransmission line, a copper line, an optical line, a wirelesscommunication channel, an infrared communication link, or othercommunication path. A connection between two devices, such as device 405and device 410, is referred to as a link, such as link 415. A link maysupport one lane—each lane representing a set of differential signalpairs (one pair for transmission, one pair for reception). To scalebandwidth, a link may aggregate multiple lanes denoted by xN, where N isany supported link width, such as 1, 2, 4, 8, 12, 16, 32, 64, or wider.

A differential pair can refer to two transmission paths, such as lines416 and 417, to transmit differential signals. As an example, when line416 toggles from a low voltage level to a high voltage level, i.e. arising edge, line 417 drives from a high logic level to a low logiclevel, i.e. a falling edge. Differential signals potentially demonstratebetter electrical characteristics, such as better signal integrity, i.e.cross-coupling, voltage overshoot/undershoot, ringing, among otherexample advantages. This allows for a better timing window, whichenables faster transmission frequencies.

In one embodiment, a new High Performance Interconnect (HPI) isprovided. HPI can include a next-generation cache-coherent, link-basedinterconnect. As one example, HPI may be utilized in high performancecomputing platforms, such as workstations or servers, including insystems where PCIe or another interconnect protocol is typically used toconnect processors, accelerators, I/O devices, and the like. However,HPI is not so limited. Instead, HPI may be utilized in any of thesystems or platforms described herein. Furthermore, the individual ideasdeveloped may be applied to other interconnects and platforms, such asPCIe, MIPI, QPI, etc.

To support multiple devices, in one example implementation, HPI caninclude an Instruction Set Architecture (ISA) agnostic (i.e. HPI is ableto be implemented in multiple different devices). In another scenario,HPI may also be utilized to connect high performance I/O devices, notjust processors or accelerators. For example, a high performance PCIedevice may be coupled to HPI through an appropriate translation bridge(i.e. HPI to PCIe). Moreover, the HPI links may be utilized by many HPIbased devices, such as processors, in various ways (e.g. stars, rings,meshes, etc.). FIG. 5 illustrates example implementations of multiplepotential multi-socket configurations. A two-socket configuration 505,as depicted, can include two HPI links; however, in otherimplementations, one HPI link may be utilized. For larger topologies,any configuration may be utilized as long as an identifier (ID) isassignable and there is some form of virtual path, among otheradditional or substitute features. As shown, in one example, a foursocket configuration 510 has an HPI link from each processor to another.But in the eight socket implementation shown in configuration 515, notevery socket is directly connected to each other through an HPI link.However, if a virtual path or channel exists between the processors, theconfiguration is supported. A range of supported processors includes2-32 in a native domain. Higher numbers of processors may be reachedthrough use of multiple domains or other interconnects between nodecontrollers, among other examples.

The HPI architecture includes a definition of a layered protocolarchitecture, including in some examples, protocol layers (coherent,non-coherent, and, optionally, other memory based protocols), a routinglayer, a link layer, and a physical layer. Furthermore, HPI can furtherinclude enhancements related to power managers (such as power controlunits (PCUs)), design for test and debug (DFT), fault handling,registers, security, among other examples. FIG. 5 illustrates anembodiment of an example HPI layered protocol stack. In someimplementations, at least some of the layers illustrated in FIG. 5 maybe optional. Each layer deals with its own level of granularity orquantum of information (the protocol layer 605 a,b with packets 630,link layer 610 a,b with flits 635, and physical layer 605 a,b with phits640). Note that a packet, in some embodiments, may include partialflits, a single flit, or multiple flits based on the implementation.

As a first example, a width of a phit 640 includes a 1 to 1 mapping oflink width to bits (e.g. 20 bit link width includes a phit of 20 bits,etc.). Flits may have a greater size, such as 184, 192, or 200 bits.Note that if phit 640 is 20 bits wide and the size of flit 635 is 184bits then it takes a fractional number of phits 640 to transmit one flit635 (e.g. 9.2 phits at 20 bits to transmit an 184 bit flit 635 or 9.6 at20 bits to transmit a 192 bit flit, among other examples). Note thatwidths of the fundamental link at the physical layer may vary. Forexample, the number of lanes per direction may include 2, 4, 6, 8, 10,12, 14, 16, 18, 20, 22, 24, etc. In one embodiment, link layer 610 a,bis capable of embedding multiple pieces of different transactions in asingle flit, and one or multiple headers (e.g. 1, 2, 3, 4) may beembedded within the flit. In one example, HPI splits the headers intocorresponding slots to enable multiple messages in the flit destined fordifferent nodes.

Physical layer 605 a,b, in one embodiment, can be responsible for thefast transfer of information on the physical medium (electrical oroptical etc.). The physical link can be point-to-point between two Linklayer entities, such as layer 605 a and 605 b. The Link layer 610 a,bcan abstract the Physical layer 605 a,b from the upper layers andprovides the capability to reliably transfer data (as well as requests)and manage flow control between two directly connected entities. TheLink Layer can also be responsible for virtualizing the physical channelinto multiple virtual channels and message classes. The Protocol layer620 a,b relies on the Link layer 610 a,b to map protocol messages intothe appropriate message classes and virtual channels before handing themto the Physical layer 605 a,b for transfer across the physical links.Link layer 610 a,b may support multiple messages, such as a request,snoop, response, writeback, non-coherent data, among other examples.

The Physical layer 605 a,b (or PHY) of HPI can be implemented above theelectrical layer (i.e. electrical conductors connecting two components)and below the link layer 610 a,b, as illustrated in FIG. 6. The Physicallayer and corresponding logic can reside on each agent and connects thelink layers on two agents (A and B) separated from each other (e.g. ondevices on either side of a link). The local and remote electricallayers are connected by physical media (e.g. wires, conductors, optical,etc.). The Physical layer 605 a,b, in one embodiment, has two majorphases, initialization and operation. During initialization, theconnection is opaque to the link layer and signaling may involve acombination of timed states and handshake events. During operation, theconnection is transparent to the link layer and signaling is at a speed,with all lanes operating together as a single link. During the operationphase, the Physical layer transports flits from agent A to agent B andfrom agent B to agent A. The connection is also referred to as a linkand abstracts some physical aspects including media, width and speedfrom the link layers while exchanging flits and control/status ofcurrent configuration (e.g. width) with the link layer. Theinitialization phase includes minor phases e.g. Polling, Configuration.The operation phase also includes minor phases (e.g. link powermanagement states).

In one embodiment, Link layer 610 a,b can be implemented so as toprovide reliable data transfer between two protocol or routing entities.The Link layer can abstract Physical layer 605 a,b from the Protocollayer 620 a,b, and can be responsible for the flow control between twoprotocol agents (A, B), and provide virtual channel services to theProtocol layer (Message Classes) and Routing layer (Virtual Networks).The interface between the Protocol layer 620 a,b and the Link Layer 610a,b can typically be at the packet level. In one embodiment, thesmallest transfer unit at the Link Layer is referred to as a flit whicha specified number of bits, such as 192 bits or some other denomination.The Link Layer 610 a,b relies on the Physical layer 605 a,b to frame thePhysical layer's 605 a,b unit of transfer (phit) into the Link Layer's610 a,b unit of transfer (flit). In addition, the Link Layer 610 a,b maybe logically broken into two parts, a sender and a receiver. Asender/receiver pair on one entity may be connected to a receiver/senderpair on another entity. Flow Control is often performed on both a flitand a packet basis. Error detection and correction is also potentiallyperformed on a flit level basis.

In one embodiment, Routing layer 615 a,b can provide a flexible anddistributed method to route HPI transactions from a source to adestination. The scheme is flexible since routing algorithms formultiple topologies may be specified through programmable routing tablesat each router (the programming in one embodiment is performed byfirmware, software, or a combination thereof). The routing functionalitymay be distributed; the routing may be done through a series of routingsteps, with each routing step being defined through a lookup of a tableat either the source, intermediate, or destination routers. The lookupat a source may be used to inject a HPI packet into the HPI fabric. Thelookup at an intermediate router may be used to route an HPI packet froman input port to an output port. The lookup at a destination port may beused to target the destination HPI protocol agent. Note that the Routinglayer, in some implementations, can be thin since the routing tables,and, hence the routing algorithms, are not specifically defined byspecification. This allows for flexibility and a variety of usagemodels, including flexible platform architectural topologies to bedefined by the system implementation. The Routing layer 615 a,b relieson the Link layer 610 a,b for providing the use of up to three (or more)virtual networks (VNs)—in one example, two deadlock-free VNs, VN0 andVN1 with several message classes defined in each virtual network. Ashared adaptive virtual network (VNA) may be defined in the Link layer,but this adaptive network may not be exposed directly in routingconcepts, since each message class and virtual network may havededicated resources and guaranteed forward progress, among otherfeatures and examples.

In some implementations, HPI can utilize an embedded clock. A clocksignal can be embedded in data transmitted using the interconnect. Withthe clock signal embedded in the data, distinct and dedicated clocklanes can be omitted. This can be useful, for instance, as it can allowmore pins of a device to be dedicated to data transfer, particularly insystems where space for pins is at a premium.

A link can be established between two agents on either side of aninterconnect. An agent sending data can be a local agent and the agentreceiving the data can be a remote agent. State machines can be employedby both agents to manage various aspects of the link. In one embodiment,the Physical layer datapath can transmit flits from the link layer tothe electrical front-end. The control path, in one implementation,includes a state machine (also referred to as a link training statemachine or the similar). The state machine's actions and exits fromstates may depend on internal signals, timers, external signals or otherinformation. In fact, some of the states, such as a few initializationstates, may have timers to provide a timeout value to exit a state. Notethat detect, in some embodiments, refers to detecting an event on bothlegs of a lane; but not necessarily simultaneously. However, in otherembodiments, detect refers to detection of an event by an agent ofreference. Debounce, as one example, refers to sustained assertion of asignal. In one embodiment, HPI supports operation in the event ofnon-function lanes. Here, lanes may be dropped at specific states.

States defined in the state machine can include reset states,initialization states, and operational states, among other categoriesand subcategories. In one example, some initialization states can have asecondary timer which is used to exit the state on a timeout(essentially an abort due to failure to make progress in the state). Anabort may include updating of registers, such as status register. Somestates can also have primary timer(s) which are used to time the primaryfunctions in the state. Other states can be defined such that internalor external signals (such as handshake protocols) drive transition fromthe state to another state, among other examples.

A state machine may also support debug through single step, freeze oninitialization abort and use of testers. Here, state exits can bepostponed/held until the debug software is ready. In some instance, theexit can be postponed/held until the secondary timeout. Actions andexits, in one embodiment, can be based on exchange of trainingsequences. In one embodiment, the link state machine is to run in thelocal agent clock domain and transition from one state to the next is tocoincide with a transmitter training sequence boundary. Status registersmay be utilized to reflect the current state.

FIG. 7 illustrates a representation of at least a portion of a statemachine used by agents in one example implementation of HPI. It shouldbe appreciated that the states included in the state table of FIG. 7include a non-exhaustive listing of possible states. For instance, sometransitions are omitted to simplify the diagram. Also, some states maybe combined, split, or omitted, while others might be added. Such statescan include:

Event reset state: entered on a warm or cold reset event. Restoresdefault values. Initialize counters (e.g., sync counters). May exit toanother state, such as another reset state.

Timed reset state: timed state for in-band reset. May drive a predefinedelectrical ordered set (EOS) so remote receivers are capable ofdetecting the EOS and entering the timed reset as well. Receiver haslanes holding electrical settings. May exit to an agent to calibratereset state.

Calibrate reset state: calibration without signaling on the lane (e.g.receiver calibration state) or turning drivers off. May be apredetermined amount of time in the state based on a timer. May set anoperational speed. May act as a wait state when a port is not enabled.May include minimum residency time. Receiver conditioning or staggeringoff may occur based on design. May exit to a receiver detect state aftera timeout and/or completion of calibration.

Receiver detect state: detect presence of a receiver on lane(s). Maylook for receiver termination (e.g. receiver pulldown insertion). Mayexit to calibrate reset state upon a specified value being set or whenanother specified value is not set. May exit to transmitter calibratestate if a receiver is detected or a timeout is reached.

Transmitter calibrate state: for transmitter calibrations. May be atimed state allocated for transmitter calibrations. May includesignaling on a lane. May continuously drive an EOS, such as an electricidle exit ordered set (EIEOS). May exit to compliance state when donecalibrating or on expiration of a timer. May exit to transmitter detectstate if a counter has expired or a secondary timeout has occurred.

Transmitter detect state: qualifies valid signaling. May be a handshakestate where an agent completes actions and exits to a next state basedon remote agent signaling. Receiver may qualify valid signaling fromtransmitter. Receiver, in one embodiment, looks for a wake detect, andif debounced on one or more lanes looks for it on the other lanes.Transmitter drives a detect signal. May exit to a polling state inresponse to debounce being completed for all lanes and/or a timeout orif debounce on all lanes is not complete and there is a timeout. Here,one or more monitor lanes may be kept awake to debounce a wake signal.And if debounced then the other lanes are potentially debounced. Thiscan enable power savings in low power states.

Polling state: receiver adapts, initializes drift buffer and locks onbits/bytes (e.g. identifies symbol boundaries). Lanes may be deskewed. Aremote agent may cause an exit to a next state (e.g. a Link Width State)in response to an acknowledge message. Polling can additionally includea training sequence lock by locking to an EOS and a training sequenceheader. Lane to lane skew at remote transmitter may be capped at a firstlength for top speed and a second length for slow speed. Deskew may beperformed in a slow mode as well as an operational mode. Receiver mayhave a specific maximum to deskew lane-to-lane skew, such as 8, 16, or32 intervals of skew. Receiver actions may include latency fixing.Receiver actions, in one embodiment, can be completed on successfuldeskew of a valid lane map. A successful handshake can be achieved, inone example, when a number of consecutive training sequence headers arereceived with acknowledgements and a number of training sequences withan acknowledge are transmitted after the receiver has completed itsactions.

Link width state: agent communicates with the final lane map to remotetransmitter. Receiver receives the information and decodes. Receiver mayrecord a configured lane map in a structure after checkpoint of aprevious lane map value in a second structure. Receiver may also respondwith an acknowledge (“ACK”). May initiate an in-band reset. As oneexample, first state to initiate in-band reset. In one embodiment, exitto a next state, such as flit configuration state, is performed inresponse to the ACK. Further, prior to entering low power state, a resetsignal may also be generated if the frequency of a wake detect signaloccurrence drops below a specified value (e.g. 1 every number of unitintervals (UIs), such as 4K UI). Receiver may hold current and previouslane maps. Transmitter may use different groups of lanes based ontraining sequences having different values. Lane map may not modify somestatus registers in some embodiments.

Flitlock configuration state: entered by a transmitter but the state isconsidered exited (i.e. secondary timeout moot) when both transmitterand receiver have exited to a blocking link state or other link state.Transmitter exit to a link state, in one embodiment, includes start of adata sequence (SDS) and training sequence (TS) boundary after receivinga planetary alignment signal. Here, receiver exit may be based onreceiving an SDS from a remote transmitter. This state may be a bridgefrom agent to link state. Receiver identifies SDS. Receiver may exit toblocking link state (BLS) (or a control window) if SDS received after adescrambler is initialized. If a timeout occurs, exit may be to resetstate. Transmitter drives lanes with a configuration signal. Transmitterexit may be to reset, BLS, or other states based on conditions ortimeouts.

Transmitting Link State: a link state. Flits are sent to a remote agent.May be entered from a blocking link state and return to a blocking linkstate on an event, such as a timeout. Transmitter transmits flits.Receiver receives flits. May also exit to a low power link state. Insome implementations, transmitting link state (TLS) can be referred toas the L0 state.

Blocking Link State: a link state. Transmitter and receiver areoperating in a unified manner. May be a timed state during which thelink layer flits are held off while the Physical layer information iscommunicated to the remote agent. May exit to a low power link state (orother link state based on the design). A blocking link state (BLS), inone embodiment, periodically occurs. The period is referred to as a BLSinterval and may be timed, as well as may differ between slow speed andoperational speed. Note that the link layer may be periodically blockedfrom sending flits so that a Physical layer control sequence of a lengthmay be sent, such as during a transmitting link state or a partial widthtransmitting link state. In some implementations, blocking link state(BLS) can be referred to as a L0 control, or L0c, state.

Partial Width Transmitting Link State: Link state. May save power byentering a partial width state. In one embodiment asymmetric partialwidth refers to each direction of a two direction link having differentwidths, which may be supported in some designs. An example of aninitiator, such as a transmitter, sending a partial width indication toenter partial width transmitting link state is shown in the example ofFIG. 9. Here, a partial width indication is sent while transmitting on alink with a first width to transition the link to transmit at a second,new width. A mismatch may result in a reset. Note that speeds may not bealtered but width may be. Therefore, flits are potentially sent atdifferent widths. May be similar to a transmitting link state logically;yet, since there is a smaller width, it may take longer to transmitflits. May exit to other link states, such as a low power link statebased on certain received and sent messages or an exit of the partialwidth transmitting link state or a link blocking state based on otherevents. In one embodiment, a transmitter port may turn idle lanes off ina staggered manner to provide better signal integrity (i.e. noisemitigation). Here, non-retry-able flits, such as Null flits, may beutilized during periods where the link width is changing. Acorresponding receiver may drop these null flits and turn idle lanes offin a staggered manner, as well as record the current and previous lanemaps in one or more structures. Note status and associated statusregister may remain unaltered. In some implementations, partial widthtransmitting link state can be referred to as a partial L0, or L0p,state.

Exit Partial Width Transmitting Link State: exit the partial widthstate. May or may not use a blocking link state in some implementations.The transmitter initiates exit, in one embodiment, by sending partialwidth exit patterns on the idle lanes to train and deskew them. As oneexample, an exit pattern start with EIEOS, which is detected anddebounced to signal that the lane is ready to start the entry to a fulltransmitting link state, and may end with SDS or Fast Training Sequence(FTS) on idle lanes. Any failure during the exit sequence (receiveractions, such as deskew not completed prior to timeout) stops flittransfers to the link layer and asserts a reset, which is handled byresetting the link on the next blocking link state occurrence. The SDSmay also initialize the scrambler/descrambler on the lanes toappropriate values.

Low Power Link State: is a lower power state. In one embodiment, it islower power than the partial width link state, since signaling in thisembodiment is stopped on all lanes and in both directions. Transmittersmay use a blocking link state for requesting a low power link state.Here, receiver may decode the request and respond with an ACK or a NAK;otherwise reset may be triggered. In some implementations, low powerlink state can be referred to as a L1 state.

In some implementations, state transitions can be facilitated to allowstates to be bypassed, for instance, when state actions of the states,such as certain calibrations and configurations, have already beencompleted. Previous state results and configurations of a link can bestored and reused in subsequent initializations and configurations of alink. Rather than repeating such configurations and state actions,corresponding states can be bypassed. Traditional systems implementingstate bypasses, however, often implement complex designs and expensivevalidation escapes. Rather than using a traditional bypass, in oneexample, HPI can utilize short timers in certain states, such as wherethe state actions do not need to be repeated. This can potentially allowfor more uniform and synchronized state machine transitions among otherpotential advantages.

In one example, a software-based controller (e.g., through an externalcontrol point for the Physical layer) can enable a short timer for oneor more particular states. For instance, for a state for which actionshave already been performed and stored, the state can be short-timed tofacilitate a quick exit from the state to a next state. If, however, theprevious state action fails or cannot be applied within the short timerduration, a state exit can be performed. Further, the controller candisable the short timer, for instance, when the state actions should beperformed anew. A long, or default, timer can be set for each respectivestate. If configuration actions at the state cannot be completed withinthe long timer, a state exit can occur. The long timer can be set to areasonable duration so as to allow completion of the state actions. Theshort timer, in contrast, may be considerably shorter making it, in somecases, impossible to perform the state actions without reference back topreviously-performed state actions, among other examples.

In some implementations of HPI, supersequences can be defined, eachsupersequence corresponding to a respective state or entry/exit to/fromthe respective state. A supersequence can include a repeating sequenceof data sets and symbols. The sequences can repeat, in some instances,until completion of a state or state transition, or communication of acorresponding event, among other examples. In some instances, therepeating sequence of a supersequence can repeat according to a definedfrequency, such as a defined number of unit intervals (UIs). A unitinterval (UI) can correspond to the interval of time for transmitting asingle bit on a lane of a link or system. In some implementations, therepeating sequence can begin with an electrically ordered set (EOS).Accordingly, an instance of the EOS can be expected to repeat inaccordance with the predefined frequency. Such ordered sets can beimplemented as defined 16 Byte codes that may be represented inhexadecimal format, among other examples. In one example, the EOS of asupersequence can be an electric idle ordered set (or EIEIOS). In oneexample, an EIEOS can resemble a low frequency clock signal (e.g., apredefined number of repeating FF00 or FFF000 hexadecimal symbols,etc.). A predefined set of data can follow the EOS, such as a predefinednumber of training sequences or other data. Such supersequences can beutilized in state transitions including link state transitions as wellas initialization, among other examples.

As introduced above, initialization, in one embodiment, can be doneinitially at slow speed followed by initialization at fast speed.Initialization at slow speed uses the default values for the registersand timers. Software then uses the slow speed link to setup theregisters, timers and electrical parameters and clears the calibrationsemaphores to pave the way for fast speed initialization. As oneexample, initialization can consist of such states or tasks as Reset,Detect, Polling, and Configuration, among potentially others.

In one example, a link layer blocking control sequence (i.e. a blockinglink state (BLS) or L0c state) can include a timed state during whichthe link layer flits are held off while the PHY information iscommunicated to the remote agent. Here, the transmitter and receiver maystart a block control sequence timer. And upon expiration of the timers,the transmitter and receiver can exit the blocking state and may takeother actions, such as exit to reset, exit to a different link state (orother state), including states that allow for the sending of flitsacross the link.

In one embodiment, link training can be provided and include the sendingof one or more of scrambled training sequences, ordered sets, andcontrol sequences, such as in connection with a defined supersequence. Atraining sequence symbol may include one or more of a header, reservedportions, a target latency, a pair number, a physical lane map codereference lanes or a group of lanes, and an initialization state. In oneembodiment, the header can be sent with a ACK or NAK, among otherexamples. As an example, training sequences may be sent as part ofsupersequences and may be scrambled.

In one embodiment, ordered sets and control sequences are not scrambledor staggered and are transmitted identically, simultaneously andcompletely on all lanes. A valid reception of an ordered set may includechecking of at least a portion of the ordered set (or entire ordered setfor partial ordered sets). Ordered sets may include an electricallyordered set (EOS), such as an Electrical Idle Ordered Set (EIOS) or anEIEOS. A supersequence may include a start of a data sequence (SDS) or aFast Training Sequence (FTS). Such sets and control supersequences canbe predefined and may have any pattern or hexadecimal representation, aswell as any length. For example, ordered sets and supersequences may bea length of 8 bytes, 16, bytes, or 32 bytes, etc. FTS, as an example,can additionally be utilized for fast bit lock during exit of a partialwidth transmitting link state. Note that the FTS definition may be perlane and may utilize a rotated version of the FTS.

Supersequences, in one embodiment, can include the insertion of an EOS,such as an EIEOS, in a training sequence stream. When signaling starts,lanes, in one implementation, power-on in a staggered manner. This mayresult, however, in initial supersequences being seen truncated at thereceiver on some lanes. Supersequences can be repeated however overshort intervals (e.g., approximately one-thousand unit intervals (or{tilde over ( )}1KUI)). The training supersequences may additionally beused for one or more of deskew, configuration and for communicatinginitialization target, lane map, etc. The EIEOS can be used for one ormore of transitioning a lane from inactive to active state, screeningfor good lanes, identifying symbol and TS boundaries, among otherexamples.

Turning to FIG. 8, representations of example supersequences are shown.For instance, an exemplary Detect supersequence 805 can be defined. TheDetect supersequence 805 can include a repeating sequence of a singleEIEOS (or other EOS) followed by a predefined number of instances of aparticular training sequence (TS). In one example, the EIEOS can betransmitted, immediately followed by seven repeated instances of TS.When the last of the seven TSes is sent the EIEOS can be sent againfollowed by seven additional instances of TS, and so on. This sequencecan be repeated according to a particular predefined frequency. In theexample of FIG. 8, the EIEOS can reappear on the lanes approximatelyonce every one thousand UIs ({tilde over ( )}1KUI) followed by theremainder of the Detect supersequence 805. A receiver can monitor lanesfor the presence of a repeating Detect supersequence 805 and uponvalidating the supersequence 705 can conclude that a remote agent ispresent, has been added (e.g., hot plugged) on the lanes, has awoke, oris reinitializing, etc.

In another example, another supersequence 810 can be defined to indicatea polling, configuration, or loopback condition or state. As with theexample Detect supersequence 805, lanes of a link can be monitored by areceiver for such a Poll/Config/Loop supersequence 810 to identify apolling state, configuration state, or loopback state or condition. Inone example, a Poll/Config/Loop supersequence 810 can begin with anEIEOS followed by a predefined number of repeated instances of a TS. Forinstance, in one example the EIEOS can be followed by thirty-one (31)instances of TS with the EIEOS repeating approximately every fourthousand UI (e.g., ˜4KUI).

Further, in another example, a partial width transmitting state (PWTS)exit supersequence 815 can be defined. In one example, a PWTS exitsupersequence can include an initial EIEOS to repeat to pre-conditionlanes in advance of the sending of the first full sequence in thesupersequence. For instance, the sequence to be repeated insupersequence 815 can begin with an EIEOS (to repeat approximately onceevery 1KUI). Further, fast training sequences (FTS) can be utilized inlieu of other training sequences (TS), the FTS configured to assist inquicker bit lock, byte lock, and deskewing. In some implementations, anFTS can be unscrambled to further assist in bringing idle lanes back toactive as quickly and non-disruptively as possible. As with othersupersequences preceding an entry into a link transmitting state, thesupersequence 815 can be interrupted and ended through the sending of astart of data sequence (SDS). Further, a partial FTS (FTSp) can be sentto assist in synchronizing the new lanes to the active lanes, such as byallowing bits to be subtracted (or added) to the FTSp, among otherexamples.

Supersequences, such as Detect supersequence 705 and Poll/Config/Loopsupersequence 710, etc. can potentially be sent substantially throughoutthe initialization or re-initialization of a link. A receiver, uponreceiving and detecting a particular supersequence can, in someinstances, respond by echoing the same supersequence to the transmitterover the lanes. The receiving and validation of a particularsupersequence by transmitter and receiver can serve as a handshake toacknowledge a state or condition communicated through the supersequence.For instance, such a handshake (e.g., utilizing a Detect supersequence705) can be used to identify reinitialization of a link. In anotherexample, such a handshake can be utilized to indicate the end of anelectrical reset or low power state, resulting in corresponding lanesbeing brought back up, among other examples. The end of the electricalreset can be identified, for instance, from a handshake betweentransmitter and receiver each transmitting a Detect supersequence 705.

In another example, lanes can be monitored for supersequences and usethe supersequences in connection with the screening of lanes for detect,wake, state exits and entries, among other events. The predefined andpredictable nature and form of supersequences can be further used toperform such initialization tasks as bit lock, byte lock, debouncing,descrambling, deskewing, adaptation, latency fixing, negotiated delays,and other potential uses. Indeed, lanes can be substantiallycontinuously monitored for such events to quicken the ability of thesystem to react to and process such conditions.

FIG. 10 represents an example training sequence (TS) in accordance withone example. In FIG. 10, a training sequence 1005 can include a header1010 and various fields that can be used to communicate information inconnection with initialization of a link. For instance, in one example,fields for target latency 1015, state 1020, lane pair number 1025, lanemapping 1028 among other fields can be included. For instance, ascrambler synchronization field 1030 can additionally be provided toassist, among other functions, in synchronizing linear feedback shiftregisters (LFSR) at a device to allow descrambling of TS fields. Otherreserved fields (e.g., 1055, 1060) can also be included in a trainingsequence (e.g., 1005).

A TS header 1010 can include additional fields that can be used tocommunicate training sequence type (e.g., from which initializationstate can be determined or inferred) 1035, ACK/NAK fields 1040 (e.g.,for use in handshaking), lane identifier fields (e.g., identifying alane by its least significant bit, by lane reversal, etc.) 1045, andother fields, including reserved fields. In some implementations,portions of a TS can be scrambled, for instance, by a random orpseudo-random binary sequence (PRBS). In one examples, the TS header1010 can be preserved in the clear while the remainder (or body (e.g.,1050)) of the TS is scrambled, for instance, by XORing those portions ofthe TS with a PRBS, among other examples.

In one implementation, a TS can be sixteen (16) bytes in length and theTS header can occupy the first byte (i.e., byte 0) of the TS. The TSpayload can be scrambled and occupy the remaining fifteen bytes. In oneexample implementation, a TS tail or suffix can include the last fewbytes of the TS. For instance, in one example, a scramblingsynchronization field 1030 can occupy at least three bytes of the TS,for instance bytes 6-8 of the TS. The tail bits of the TS (e.g., bytes9-15), in this particular implementation, can be maintained as reservedbits (e.g., 1055). Bits in bytes 6-15 can all be set to 0.

In some implementations, HPI can supports use of a TS header (e.g.,1010) can be utilized instead of or in addition to a TS payload for keyinitialization parameters. In some implementations, TS payload may beused to exchange initialization parameters like ACKs and lane numbers.DC levels for communicating lane polarity may also be used. However, insome implementations, HPI can implement DC-balanced codes in the TSheader (e.g., 1010) for key parameters. For instance, in instances wherea TS header is unscrambled, available TS header codes can be defined sothat the number of “1”s substantially equal the number “0”s appearing inthe TS header fields (e.g., 1035, 1040, 1045). DC balance can berealized throughout the remainder of the TS (e.g., the TS payload) byscrambling bits of the TS payload by XORing the bits against a random orpseudorandom binary sequence.

In one example implementation, a PRBS sequence can be utilized with atleast 23 bits (PRBS23). The PRBS can be generated according to aparticular selected polynomial. In one example, the PRBS can begenerated by a similar bit size, self-seeded storage element, such as alinear feedback shift register (LFSR). The LFSR can be a 23-bitFibonacci LFSR capable of generating a PRBS sequence of up to 8 Mb inlength. The PRBS can repeat following the end of the sequence. In someimplementations, the entirety of the PRBS23 sequence can be used in thescrambling of training sequences included in supersequences used, forinstance, in initialization of the link in HPI.

While the full length of a PRBS sequence can be used, in someimplementations, HPI can support allowing the use of varying lengths ofthe available PRBS sequence (e.g., the use of only a portion of thePRBS23 sequence). In some examples, a controller of a device can specifythat only a portion of the full length of a PRBS sequence be utilized.This can be desirable, for instance, in testing applications whererepeatability of bit sequences is desired, among potentially otherapplications. A software-based controller can specifying varying lengthsof the PRBS to be applied. For instance, BIOS of a device can specifythe PRBS length to be applied on the link. In some implementations, useof the full length of the PRBS sequence can be the default setting, forinstance, so as to maximize the benefits of the lengthy PRBS sequence.

Lane traffic in a transmitting link state (TLS) and training sequencescan be scrambled with a PRBS of a particular minimum length (e.g., 23bits). The starting seed applied to a stream can be varied between thelanes to enhance the electrical benefits of the PRBS on the link. In oneexample implementations, the PRBS can be generated by a 23 bit FibonacciLFSR implementing a 6-tap generator polynomial, such as,(x²³+x²¹+x¹⁶+x⁸+x⁵+x²+1).

The starting (on scrambler/descrambler initialization) seed values forlane number modulo 8 may be any value, for instance, 8 hexadecimalvalues where each one is associated with 2 or 3 of the lanes in a link.Use of such seeds can result in rotating (or staggering) of the PRBSbetween the lanes. The number of LFSRs can be reduced by using theproperty that even lane PRBS can be derived from an XOR of PRBS of oddlanes. The EIEOS and header of the training sequences are not scrambled.The entry point of a supersequence on each lane can be initiated (e.g.,where the transmitter starts driving) at a different point on each lane.This can enable the lanes to be turned on in a staggered manner in orderto reduce noise in the power delivery system. Indeed, each lane can haveits own instance of an LFSR. The staggering times can vary by the numberof lanes being turned on and may be implementation dependent duringinitialization. These can be specified in the timing diagrams and timerprofiles for partial transmitting width state exit. Further, fasttraining sequences (FTS) (also discussed below) can also be rotated bylane.

In some instances, scrambling can reduce power supply noise attransmitter and provide a richer frequency spectrum at receiver. Thescrambler can be initialized by the first EIEOS transmitted. Thedescrambler can be synchronized to the scrambler, for instance, throughself-seeding. For instance, the received 23 bit pattern can be embeddedin a field of the TS as a seed. In one example, the 23 bit seed can beidentified from the scrambling of the bits of the scramblingsynchronization field (e.g., 1050). The receiver can utilize the seedvalue to identify the specific location of the PRBS used to scramble thereceived TS. For instance, a receiver can identify the seed and load theseed into its own LFSR to synchronize to the PRBS used by thetransmitter. In some instances, a receiver may read multiple scramblingsynchronization field or multiple TSes in a supersequence in order toseed its own LFSR. Upon detecting and synching to the PRBS of thetransmitter however, a receiver can descramble the remainder of the TSesas well as all subsequent TS sent in supersequences duringinitialization of the link, among other examples.

Supersequences can be used to facilitate bit lock and synchronization ona lane. As discussed above, at least a portion of the supersequences canbe scrambled. Returning to the discussion of FIG. 8, a detectsupersequence can be used by a receiver to detect, or lock, the bit andbyte edges of the received bit stream and identify which bytes are beingsent in the supersequence. For instance, the EIEOS and TS header can beleft unscrambled to assist the receiver in more quickly locking to thesupersequence. Additionally, the supersequence can be defined to allowthe EIEOS (and beginning of the supersequence) to repeat at a relativelyshort frequency (e.g., to more quickly allow the receiver another chanceto detect the EIEOS in the event that the first EIEOS was not accuratelydetected). For instance, in one example, a supersequence can be definedto repeat every 1KUI or shorter. Such supersequences can further allowmore randomized transitions during initialization, as well assimplifying TS lock, latency fixing, and other actions.

Additionally, leaving the EIEOS and TS header unscrambled can allow bytelock to occur and permit the receiver to be able to identify thelocation of subsequent bytes and symbols (including scrambled TSsymbols). For instance, the edge of the unscrambled TS header can beidentified and thereby also the start of scrambling synchronizationfield (e.g., 1050) (e.g., by simply counting the number of bytes fromthe edge of the TS header to the symbol). Upon detecting the PRBS seedin the scrambling synchronization field, the receiver will know thefollowing PRBS pattern values and will also be able to predict thevalues of subsequent scrambling synchronization field (e.g., 1050)values. Accordingly, the receiver, upon locking to the PRBS can furtherutilize the scrambling synchronization field (e.g., 1050) values tofacilitate other configuration tasks such as adaptation, deskew, andother tasks.

On multi-lane links, symbols can be sent simultaneously on all lanes bya transmitter, however, link-to-link skew can manifest with some symbolsnot arriving at the receiver at the same time. Sources of skew caninclude, for instance, chip differential drivers and receivers, printedwiring board impedance variations, lane wire length mismatches, amongother examples. In one embodiment, HPI provides advanced logic to deskewlanes. As an example, the TS boundary after TS lock can be used todeskew the lanes. For instance, TS lock can be used to detect skew(e.g., that a TS is arriving on one lane later than another TS onanother one of the link's lanes). An EIEOS can also be used to detectskew. In addition, using the predictability of a synched PRBS pattern,some implementations of HPI may deskew by comparing lane PRBS patternsin the LFSR during specific points in the payload. Further, in someinstances, scrambling of training sequences can be re-initialized anddeskew can be performed by doing a table lookup of PRBS values duringthe re-seeding of the training sequence, among other examples. Suchdeskew can be useful in testchips, for instance, which may lack abilityto detect TS or state machines to manage the deskew, among otherexamples.

Upon detecting skew, HPI logic (e.g., provided through asoftware-supported controller) can identify the skew on each lanerelative to other lanes in a link and adjust the lanes to attempt toeliminate the skew. For instance, “faster” lanes can be artificiallyslowed (or, alternatively, slower lanes can be sped up (e.g., byreducing latency in the data path)) based on the delay detected in alane-to-lane skew to accommodate the symbols of the “slower” lanesarriving substantially simultaneously with the delayer “faster” lanes,among other examples.

In the case of adaptation, electrical characteristics of a lane can beadjusted between a transmitter and receiver based, for instance, onsample data transmitted between the transmitter and receiver. Forinstance, receiver adaptation can include the transmitter sending a datapattern to the receiver with logic at the receiver adjusting electricalcharacteristics at the receiver to adapt the lane for the link.Transmitter adaptation can involve the transmitter sending sample datato the receiver and the receiver sending feedback to the transmitterthat can be used by the transmitter to make adjustments at thetransmitter to adapt the lane. The receiver can continue to sendfeedback to the transmitter based on the adjustments made at thetransmitter.

In one example, adaptation sample data can be embodied through scrambledTS data. As one example, a fixed UI pattern may be utilized to scramblewith a bypass to an adaptation state. But by scrambling TS with PRBS23,receiver adaptation may be performed without the bypass. In addition,offset and other errors may be reduced during clock recovery andsampling. The randomness provided through the a long PRBS sequence(e.g., PRBS23) can prove an effective sample stream for adaptation.Further, in some implementations, a lane can be set to operate in slowmode to assist the logic in analyzing and adapting to sample datareceived on the lane. Upon approving the characteristics of the lanethrough adaptation, the adapted characteristics can be set and appliedto the initialization of the link.

Once the link has been successfully calibrated and configured,initialization can end and transition to the transmitting link state(TLS) in which flits begin to be transmitted. In some implementations ofHPI, transitions to TLS can be based on planetary alignment on thesystem. For instance, a planetary alignment signal can indicate anopportunity to transition to TLS. Rather than transitioning at an edgeof a supersequence, EIEOS, or TLS, some implementations of HPI canutilize a start of data sequence (SDS) symbol sent in accordance withthe planetary alignment to end initialization and transition to TLS. Inone example, an SDS can be sent anywhere in an initialization bitstream. Accordingly, a receiver can continuously scan received bits forthe SDS to hasten ending of the initialization in accordance with aplanetary alignment.

In one example, an example EIEOS can emulate a low frequency clocksignal, such as a repeating FF00 signal. An example SDS can include arepeating F0 signal in some implementations. Accordingly, in suchinstances, detecting an SDS sent in the middle of an EIEOS can berelatively simple to identify, as the risk of aliasing within the EIEOScan be minimal. Scrambling of TS payloads, however, and the resultingrandomness of the TS data can introduce the risk of aliasing of someforms of an SDS. In some implementations, a PRBS can be generated thatwill never alias an SDS over any particular span of a number of bits.Further, a tail or suffix can be provided on a TS, such as using thelast bytes of the TS to cause the PRBS to be XOR 0 values in the suffixand effectively present the PRBS unscrambled at the end of the TS. Ifthe suffix is sufficiently long, the PRBS values reflected in thescrambled suffix can make it impossible for an SDS to be aliased in thescrambled payload of a TS. For instance, in one example, the SDS can bedefined as ten consecutive bytes of the value F0 (i.e., 1111000011110000. . . ). Further, a suffix of seven reserved bytes can be provided in aTS immediately following three bytes of a scrambling synchronizationfield (e.g., 1050), as shown for instance in the example of FIG. 10. Asa result, the length of the zeroed TS suffix (e.g., ten total bytes) cancorrespond to the SDS value (e.g., ten bytes of F0) chosen which hasbeen selected as not appear within a selected scrambling PRBS (e.g.,PRBS23), among other examples. For instance, based on the polynomialutilized in an implementation of PRBS23 (or another PRBS) no ten bytesequence in PRBS23 will ever equal the selected SDS value, among otherexamples.

In some implementations, on exit from a Configuration state to TLS, thetransmit and receive LFSRs can be re-initialized by the SDS exchangedbetween transmitter and receiver. For instance, in eight starting PRBSseeds can be applied to lanes 0 . . . 7, 12 . . . 19, and 8 . . . 11(e.g., first four only) respectively. Further, lane reversal of a linkand polarity inversion of a lane can also be determined, for instance,by comparing the unscrambled first byte of the TS (e.g., the TS header)after the EIEOS to a set of possible values, among other examples.

In one embodiment, the clock can be embedded in the data so there are noseparate clock lanes. Flits can be sent according to the embedded clock.Further, the flits sent over the lanes can be scrambled to facilitateclock recovery. The receiver clock recovery unit, as one example, candeliver sampling clocks to a receiver (i.e. the receiver recovers clockfrom the data and uses it to sample the incoming data). Receivers insome implementations continuously adapt to an incoming bit stream. Byembedding the clock, pinout can be potentially reduced. However,embedding the clock in the in-band data can alter the manner in whichin-band reset is approached. In one embodiment, a blocking link state(BLS) can be utilized after initialization. Also, electrical ordered setsupersequences may be utilized during initialization to facilitate thereset, among other considerations. The embedded clock can be commonbetween the devices on a link and the common operational clock can beset during calibration and configuration of the link. For instance, HPIlinks can reference a common clock with drift buffers. Suchimplementation can realize lower latency than elastic buffers used innon-common reference clocks, among other potential advantages. Further,the reference clock distribution segments may be matched to withinspecified limits.

As noted above, an HPI link can be capable of operating at multiplespeeds including a “slow mode” for default power-up, initialization,etc. The operational (or “fast”) speed or mode of each device can bestatically set by BIOS. The common clock on the link can be configuredbased on the respective operational speeds of each device on either sideof the link. For instance, the link speed can be based on the slower ofthe two device operations speeds, among other examples. Any operationalspeed change may be accompanied by a warm or cold reset.

In some examples, on power-on, the link initializes to Slow Mode withtransfer rate of, for example, 100 MT/s. Software then sets up the twosides for operational speed of the link and begins the initialization.In other instances, a sideband mechanism can be utilized to set up alink including the common clock on the link, for instance, in theabsence or unavailability of a slow mode.

A slow mode initialization phase, in one embodiment, can use the sameencoding, scrambling, training sequences (TS), states, etc. asoperational speed but with potentially fewer features (e.g., noelectrical parameter setup, no adaptation, etc.). Slow mode operationphase can also potentially use the same encoding, scrambling etc.(although other implementations may not) but may have fewer states andfeatures compared to operational speed (e.g., no low power states).

Further, slow mode can be implemented using the native phase lock loop(PLL) clock frequency of the device. For instance, HPI can support anemulated slow mode without changing PLL clock frequency. While somedesigns may use separate PLLs for slow and fast speed, in someimplementations of HPI emulated slow mode can be achieved by allowingthe PLL clock to runs at the same fast operational speed during slowmode. For instance, a transmitter can emulate a slower clock signal byrepeating bits multiple times so as to emulate a slow high clock signaland then a slow low clock signal. The receiver can then oversample thereceived signal to locate edges emulated by the repeating bits andidentify the bit. In such implementations, ports sharing a PLL maycoexist at slow and fast speeds.

In some implementations of HPI, adaptation of lanes on a link can besupported. The Physical layer can support both receiver adaptation andtransmitter, or sender, adaptation. With receiver adaptation, thetransmitter on a lane can send sample data to the receiver which thereceiver logic can process to identify shortcomings in the electricalcharacteristics of the lane and quality of the signal. The receiver canthen make adjustments to the calibration of the lane to optimize thelane based on the analysis of the received sample data. In the case oftransmitter adaptation, the receiver can again receive sample data anddevelop metrics describing the quality of the lane but in this casecommunicate the metrics to the transmitter (e.g., using a backchannel,such as a software, hardware, embedded, sideband or other channel) toallow the transmitter to make adjustments to the lane based on thefeedback.

As both devices on a link can run off the same reference clock (e.g.,ref clk), elasticity buffers can be omitted (any elastic buffers may bebypassed or used as drift buffers with lowest possible latency).However, phase adjustment or drift buffers can be utilized on each laneto transfer the respective receiver bitstream from the remote clockdomain to the local clock domain. The latency of the drift buffers maybe sufficient to handle sum of drift from all sources in electricalspecification (e.g., voltage, temperature, the residual SSC introducedby reference clock routing mismatches, and so on) but as small aspossible to reduce transport delay. If the drift buffer is too shallow,drift errors can result and manifest as series of CRC errors.Consequently, in some implementations, a drift alarm can be providedwhich can initiate a Physical layer reset before an actual drift erroroccurs, among other examples.

Some implementations of HPI may support the two sides running at a samenominal reference clock frequency but with a ppm difference. In thiscase frequency adjustment (or elasticity) buffers may be needed and canbe readjusted during an extended BLS window or during special sequenceswhich would occur periodically, among other examples.

The operation of the HPI PHY logical layer can be independent of theunderlying transmission media provided the latency does not result inlatency fixing errors or timeouts at the link layer, among otherconsiderations.

External interfaces can be provided in HPI to assist in management ofthe Physical layer. For instance, external signals (from pins, fuses,other layers), timers, control and status registers can be provided. Theinput signals may change at any time relative to PHY state but are to beobserved by the Physical layer at specific points in a respective state.For example, a changing alignment signal (as introduced below) may bereceived but have no effect after the link has entered a transmittinglink state, among other examples. Similarly command register values canbe observed by Physical layer entities only at specific points in time.For instance, Physical layer logic can take a snapshot of the value anduse it in subsequent operations. Consequently, in some implementations,updates to command registers may be associated with a limited subset ofspecific periods (e.g., in a transmitting link state or when holding inReset calibration, in slow mode transmitting link state) to avoidanomalous behavior.

Since status values track hardware changes, the values read may dependon when they are read. Some status values, however, such as link map,latency, speed, etc., may not change after initialization. For instance,a re-initialization (or low power link state (LPLS), or L1 state, exit)is the only thing which may cause these to change (e.g., a hard lanefailure in a TLS may not result in reconfiguration of link untilre-initialization is triggered, among other examples).

Interface signals can include signals that are external to but affectPhysical layer behavior. Such interface signals can include, asexamples, encoding and timing signals. Interface signals can be designspecific. These signals can be an input or output. Some interfacesignals, such as termed semaphores and prefixed EO among other examples,can be active once per assertion edge, i.e., they may be deasserted andthen reasserted to take effect again, among other examples. Forinstance, Table 1 includes an example listing of example functions:

TABLE 1 Function input pin reset (aka warm reset) input pin reset (akacold reset) input in-band reset pulse; causes semaphore to be set;semaphore is cleared when in-band reset occurs input enables low powerstates input loopback parameters; applied for loopback pattern input toenter PWLTS input to exit PWLTS input to enter LPLS input to exit LPLSinput from idle exit detect (aka squelch break) input enables use ofCPhyInitBegin input from local or planetary alignment for transmitter toexit initialization output when remote agent NAKs LPLS request outputwhen agent enters LPLS output to link layer to force non-retryable flitsoutput to link layer to force NULL flits output when transmitter is inpartial width link transmitting state (PWLTS) output when receiver is inPWLTS

CSR timer default values can be provided in pairs—one for slow mode andone for operational speed. In some instances, the value 0 disables thetimer (i.e., timeout never occurs). Timers can include those shown inTable 2, below. Primary timers can be used to time expected actions in astate. Secondary timers are used for aborting initializations which arenot progressing or for making forward state transitions at precise timesin an automated test equipment (or ATE) mode. In some cases, secondarytimers can be much larger than the primary timers in a state.Exponential timer sets can be suffixed with exp and the timer value is 2raised to the field value. For linear timers, the timer value is thefield value. Either timer could use different granularities.Additionally, some timers in the power management section can be in aset called a timing profile. These can be associated with a timingdiagram of the same name.

TABLE 2 Timers Table Tpriexp Set Reset residency for driving EIEOSReceiver calibration minimum time; for stagger transmitter offTransmitter calibration minimum time; for stagger on Tsecexp Set Timedreceiver calibration Timed transmitter calibration Squelch exitdetect/debounce DetectAtRx overhang for handshake Adapt +bitlock/bytelock/deskew Configure link widths Wait for planetary alignedclean flit boundary Re-bytelock/deskew Tdebugexp Set For hot plug; non-0value to debug hangs TBLSentry Set BLS entry delay - fine BLS entrydelay - coarse TBLS Set BLS duration for transmitter BLS duration forreceiver BLS clean flit interval for transmitter TBLS clean flitinterval for receiver

Command and control registers can be provided. Control registers can belate action and may be read or written by software in some instances.Late-action values can take effect (e.g., pass through fromsoftware-facing to hardware-facing stage) continuously in Reset. Controlsemaphores (prefixed CP) are RW1S and can be cleared by hardware.Control registers may be utilized to perform any of the items describedherein. They may be modifiable and accessible by hardware, software,firmware, or a combination thereof.

Status registers can be provided to track hardware changes (written andused by hardware) and can be read-only (but debug software may also beable to write to them). Such registers may not affect interoperabilityand can be typically complemented with many private status registers.Status semaphores (prefixed SP) can be mandated since they may becleared by software to redo the actions which set the status. Defaultmeans initial (on reset) values can be provided as a subset of thesestatus bits related to initialization. On an initialization abort, thisregister can be copied into a storage structure.

Tool Box registers can be provided. For instance, testability tool-boxregisters in the Physical layer can provide pattern generation, patternchecking and loop back control mechanisms. Higher-level applications canmake use of these registers along with electrical parameters todetermine margins. For example, Interconnect built in test may utilizethis tool-box to determine margins. For transmitter adaptation, theseregisters can be used in conjunction with the specific registersdescribed in previous sections, among other examples.

In some implementations, HPI supports Reliability, Availability, andServiceability (RAS) capabilities utilizing the Physical layer. In oneembodiment, HPI supports hot plug and remove with one or more layers,which may include software. Hot remove can include quiescing the linkand an initialization begin state/signal can be cleared for the agent tobe removed. A remote agent (i.e. the one that is not being removed(e.g., the host agent)) can be set to slow speed and its initializationsignal can also be cleared. An in-band reset (e.g., through BLS) cancause both agents to wait in a reset state, such as a Calibrate ResetState (CRS); and the agent to be removed can be removed (or can be heldin targeted pin reset, powered down), among other examples and features.Indeed, some of the above events may be omitted and additional eventscan be added.

Hot add can include initialization speed can default to slow and aninitialization signal can be set on the agent to be added. Software canset speed to slow and may clear the initialization signal on the remoteagent. The link can come up in slow mode and software can determine anoperational speed. In some cases, no PLL relock of a remote is performedat this point. Operational speed can be set on both agents and an enablecan be set for adaptation (if not done previously). The initializationbegin indicator can be cleared on both agents and an in-band BLS resetcan cause both agents to wait in CRS. Software can assert a warm reset(e.g., a targeted or self-reset) of an agent (to be added), which maycause a PLL to relock. Software may also set the initialization beginsignal by any known logic and further set on remote (thus advancing itto Receiver Detect State (RDS)). Software can de-assert warm reset ofthe adding agent (thus advancing it to RDS). The link can theninitialize at operational speed to a Transmitting Link State (TLS) (orto Loopback if the adaption signal is set), among other examples.Indeed, some of the above events may be omitted and additional eventscan be added.

Data lane failure recovery can be supported. A link in HPI, in oneembodiment, can be resilient against hard error on a single lane byconfiguring itself to less than full width (e.g. less than half the fullwidth) which can thereby exclude the faulty lane. As an example, theconfiguration can be done by link state machine and unused lanes can beturned off in the configuration state. As a result, the flit may be sentacross at a narrower width, among other examples.

In some implementations of HPI, lane reversal can be supported on somelinks. Lane reversal can refer, for instance, to lanes 0/1/2 . . . of atransmitter connected to lanes n/n−1/n−2 . . . of a receiver (e.g. n mayequal 19 or 7, etc.). Lane reversal can be detected at the receiver asidentified in a field of a TS header. The receiver can handle the lanereversal by starting in a Polling state by using physical lane n . . . 0for logical lane 0 . . . n. Hence, references to a lane may refer to alogical lane number. Therefore, board designers may more efficiently laydown the physical or electrical design and HPI may work with virtuallane assignments, as described herein. Moreover, in one embodiment,polarity may be inverted (i.e. when a differential transmitter +/− isconnected to receiver −/+. Polarity can also be detected at a receiverfrom one or more TS header fields and handled, in one embodiment, in thePolling State.

Referring to FIG. 11, an embodiment of a block diagram for a computingsystem including a multicore processor is depicted. Processor 1100includes any processor or processing device, such as a microprocessor,an embedded processor, a digital signal processor (DSP), a networkprocessor, a handheld processor, an application processor, aco-processor, a system on a chip (SOC), or other device to execute code.Processor 1100, in one embodiment, includes at least two cores—core 1101and 1102, which may include asymmetric cores or symmetric cores (theillustrated embodiment). However, processor 1100 may include any numberof processing elements that may be symmetric or asymmetric.

In one embodiment, a processing element refers to hardware or logic tosupport a software thread. Examples of hardware processing elementsinclude: a thread unit, a thread slot, a thread, a process unit, acontext, a context unit, a logical processor, a hardware thread, a core,and/or any other element, which is capable of holding a state for aprocessor, such as an execution state or architectural state. In otherwords, a processing element, in one embodiment, refers to any hardwarecapable of being independently associated with code, such as a softwarethread, operating system, application, or other code. A physicalprocessor (or processor socket) typically refers to an integratedcircuit, which potentially includes any number of other processingelements, such as cores or hardware threads.

A core often refers to logic located on an integrated circuit capable ofmaintaining an independent architectural state, wherein eachindependently maintained architectural state is associated with at leastsome dedicated execution resources. In contrast to cores, a hardwarethread typically refers to any logic located on an integrated circuitcapable of maintaining an independent architectural state, wherein theindependently maintained architectural states share access to executionresources. As can be seen, when certain resources are shared and othersare dedicated to an architectural state, the line between thenomenclature of a hardware thread and core overlaps. Yet often, a coreand a hardware thread are viewed by an operating system as individuallogical processors, where the operating system is able to individuallyschedule operations on each logical processor.

Physical processor 1100, as illustrated in FIG. 11, includes twocores—core 1101 and 1102. Here, core 1101 and 1102 are consideredsymmetric cores, i.e. cores with the same configurations, functionalunits, and/or logic. In another embodiment, core 1101 includes anout-of-order processor core, while core 1102 includes an in-orderprocessor core. However, cores 1101 and 1102 may be individuallyselected from any type of core, such as a native core, a softwaremanaged core, a core adapted to execute a native Instruction SetArchitecture (ISA), a core adapted to execute a translated InstructionSet Architecture (ISA), a co-designed core, or other known core. In aheterogeneous core environment (i.e. asymmetric cores), some form oftranslation, such a binary translation, may be utilized to schedule orexecute code on one or both cores. Yet to further the discussion, thefunctional units illustrated in core 1101 are described in furtherdetail below, as the units in core 1102 operate in a similar manner inthe depicted embodiment.

As depicted, core 1101 includes two hardware threads 1101 a and 1101 b,which may also be referred to as hardware thread slots 1101 a and 1101b. Therefore, software entities, such as an operating system, in oneembodiment potentially view processor 1100 as four separate processors,i.e., four logical processors or processing elements capable ofexecuting four software threads concurrently. As alluded to above, afirst thread is associated with architecture state registers 1101 a, asecond thread is associated with architecture state registers 1101 b, athird thread may be associated with architecture state registers 1102 a,and a fourth thread may be associated with architecture state registers1102 b. Here, each of the architecture state registers (1101 a, 1101 b,1102 a, and 1102 b) may be referred to as processing elements, threadslots, or thread units, as described above. As illustrated, architecturestate registers 1101 a are replicated in architecture state registers1101 b, so individual architecture states/contexts are capable of beingstored for logical processor 1101 a and logical processor 1101 b. Incore 1101, other smaller resources, such as instruction pointers andrenaming logic in allocator and renamer block 1130 may also bereplicated for threads 1101 a and 1101 b. Some resources, such asre-order buffers in reorder/retirement unit 1135, ILTB 1120, load/storebuffers, and queues may be shared through partitioning. Other resources,such as general purpose internal registers, page-table base register(s),low-level data-cache and data-TLB 1115, execution unit(s) 1140, andportions of out-of-order unit 1135 are potentially fully shared.

Processor 1100 often includes other resources, which may be fullyshared, shared through partitioning, or dedicated by/to processingelements. In FIG. 11, an embodiment of a purely exemplary processor withillustrative logical units/resources of a processor is illustrated. Notethat a processor may include, or omit, any of these functional units, aswell as include any other known functional units, logic, or firmware notdepicted. As illustrated, core 1101 includes a simplified,representative out-of-order (OOO) processor core. But an in-orderprocessor may be utilized in different embodiments. The OOO coreincludes a branch target buffer 1120 to predict branches to beexecuted/taken and an instruction-translation buffer (I-TLB) 1120 tostore address translation entries for instructions.

Core 1101 further includes decode module 1125 coupled to fetch unit 1120to decode fetched elements. Fetch logic, in one embodiment, includesindividual sequencers associated with thread slots 1101 a, 1101 b,respectively. Usually core 1101 is associated with a first ISA, whichdefines/specifies instructions executable on processor 1100. Oftenmachine code instructions that are part of the first ISA include aportion of the instruction (referred to as an opcode), whichreferences/specifies an instruction or operation to be performed. Decodelogic 1125 includes circuitry that recognizes these instructions fromtheir opcodes and passes the decoded instructions on in the pipeline forprocessing as defined by the first ISA. For example, as discussed inmore detail below decoders 1125, in one embodiment, include logicdesigned or adapted to recognize specific instructions, such astransactional instruction. As a result of the recognition by decoders1125, the architecture or core 1101 takes specific, predefined actionsto perform tasks associated with the appropriate instruction. It isimportant to note that any of the tasks, blocks, operations, and methodsdescribed herein may be performed in response to a single or multipleinstructions; some of which may be new or old instructions. Notedecoders 1126, in one embodiment, recognize the same ISA (or a subsetthereof). Alternatively, in a heterogeneous core environment, decoders1126 recognize a second ISA (either a subset of the first ISA or adistinct ISA).

In one example, allocator and renamer block 1130 includes an allocatorto reserve resources, such as register files to store instructionprocessing results. However, threads 1101 a and 1101 b are potentiallycapable of out-of-order execution, where allocator and renamer block1130 also reserves other resources, such as reorder buffers to trackinstruction results. Unit 1130 may also include a register renamer torename program/instruction reference registers to other registersinternal to processor 1100. Reorder/retirement unit 1135 includescomponents, such as the reorder buffers mentioned above, load buffers,and store buffers, to support out-of-order execution and later in-orderretirement of instructions executed out-of-order.

Scheduler and execution unit(s) block 1140, in one embodiment, includesa scheduler unit to schedule instructions/operation on execution units.For example, a floating point instruction is scheduled on a port of anexecution unit that has an available floating point execution unit.Register files associated with the execution units are also included tostore information instruction processing results. Exemplary executionunits include a floating point execution unit, an integer executionunit, a jump execution unit, a load execution unit, a store executionunit, and other known execution units.

Lower level data cache and data translation buffer (D-TLB) 1150 arecoupled to execution unit(s) 1140. The data cache is to store recentlyused/operated on elements, such as data operands, which are potentiallyheld in memory coherency states. The D-TLB is to store recentvirtual/linear to physical address translations. As a specific example,a processor may include a page table structure to break physical memoryinto a plurality of virtual pages.

Here, cores 1101 and 1102 share access to higher-level or further-outcache, such as a second level cache associated with on-chip interface1110. Note that higher-level or further-out refers to cache levelsincreasing or getting further way from the execution unit(s). In oneembodiment, higher-level cache is a last-level data cache—last cache inthe memory hierarchy on processor 1100—such as a second or third leveldata cache. However, higher level cache is not so limited, as it may beassociated with or include an instruction cache. A trace cache—a type ofinstruction cache—instead may be coupled after decoder 1125 to storerecently decoded traces. Here, an instruction potentially refers to amacro-instruction (i.e. a general instruction recognized by thedecoders), which may decode into a number of micro-instructions(micro-operations).

In the depicted configuration, processor 1100 also includes on-chipinterface module 1110. Historically, a memory controller, which isdescribed in more detail below, has been included in a computing systemexternal to processor 1100. In this scenario, on-chip interface 111 isto communicate with devices external to processor 1100, such as systemmemory 1175, a chipset (often including a memory controller hub toconnect to memory 1175 and an I/O controller hub to connect peripheraldevices), a memory controller hub, a northbridge, or other integratedcircuit. And in this scenario, bus 1105 may include any knowninterconnect, such as multi-drop bus, a point-to-point interconnect, aserial interconnect, a parallel bus, a coherent (e.g. cache coherent)bus, a layered protocol architecture, a differential bus, and a GTL bus.

Memory 1175 may be dedicated to processor 1100 or shared with otherdevices in a system. Common examples of types of memory 1175 includeDRAM, SRAM, non-volatile memory (NV memory), and other known storagedevices. Note that device 1180 may include a graphic accelerator,processor or card coupled to a memory controller hub, data storagecoupled to an I/O controller hub, a wireless transceiver, a flashdevice, an audio controller, a network controller, or other knowndevice.

Recently however, as more logic and devices are being integrated on asingle die, such as SOC, each of these devices may be incorporated onprocessor 1100. For example in one embodiment, a memory controller hubis on the same package and/or die with processor 1100. Here, a portionof the core (an on-core portion) 1110 includes one or more controller(s)for interfacing with other devices such as memory 1175 or a graphicsdevice 1180. The configuration including an interconnect and controllersfor interfacing with such devices is often referred to as an on-core (orun-core configuration). As an example, on-chip interface 1110 includes aring interconnect for on-chip communication and a high-speed serialpoint-to-point link 1105 for off-chip communication. Yet, in the SOCenvironment, even more devices, such as the network interface,co-processors, memory 1175, graphics processor 1180, and any other knowncomputer devices/interface may be integrated on a single die orintegrated circuit to provide small form factor with high functionalityand low power consumption.

In one embodiment, processor 1100 is capable of executing a compiler,optimization, and/or translator code 1177 to compile, translate, and/oroptimize application code 1176 to support the apparatus and methodsdescribed herein or to interface therewith. A compiler often includes aprogram or set of programs to translate source text/code into targettext/code. Usually, compilation of program/application code with acompiler is done in multiple phases and passes to transform hi-levelprogramming language code into low-level machine or assembly languagecode. Yet, single pass compilers may still be utilized for simplecompilation. A compiler may utilize any known compilation techniques andperform any known compiler operations, such as lexical analysis,preprocessing, parsing, semantic analysis, code generation, codetransformation, and code optimization.

Larger compilers often include multiple phases, but most often thesephases are included within two general phases: (1) a front-end, i.e.generally where syntactic processing, semantic processing, and sometransformation/optimization may take place, and (2) a back-end, i.e.generally where analysis, transformations, optimizations, and codegeneration takes place. Some compilers refer to a middle, whichillustrates the blurring of delineation between a front-end and back endof a compiler. As a result, reference to insertion, association,generation, or other operation of a compiler may take place in any ofthe aforementioned phases or passes, as well as any other known phasesor passes of a compiler. As an illustrative example, a compilerpotentially inserts operations, calls, functions, etc. in one or morephases of compilation, such as insertion of calls/operations in afront-end phase of compilation and then transformation of thecalls/operations into lower-level code during a transformation phase.Note that during dynamic compilation, compiler code or dynamicoptimization code may insert such operations/calls, as well as optimizethe code for execution during runtime. As a specific illustrativeexample, binary code (already compiled code) may be dynamicallyoptimized during runtime. Here, the program code may include the dynamicoptimization code, the binary code, or a combination thereof.

Similar to a compiler, a translator, such as a binary translator,translates code either statically or dynamically to optimize and/ortranslate code. Therefore, reference to execution of code, applicationcode, program code, or other software environment may refer to: (1)execution of a compiler program(s), optimization code optimizer, ortranslator either dynamically or statically, to compile program code, tomaintain software structures, to perform other operations, to optimizecode, or to translate code; (2) execution of main program code includingoperations/calls, such as application code that has beenoptimized/compiled; (3) execution of other program code, such aslibraries, associated with the main program code to maintain softwarestructures, to perform other software related operations, or to optimizecode; or (4) a combination thereof.

Referring now to FIG. 12, shown is a block diagram of an embodiment of amulticore processor. As shown in the embodiment of FIG. 12, processor1200 includes multiple domains. Specifically, a core domain 1230includes a plurality of cores 1230A-1230N, a graphics domain 1260includes one or more graphics engines having a media engine 1265, and asystem agent domain 1210.

In various embodiments, system agent domain 1210 handles power controlevents and power management, such that individual units of domains 1230and 1260 (e.g. cores and/or graphics engines) are independentlycontrollable to dynamically operate at an appropriate power mode/level(e.g. active, turbo, sleep, hibernate, deep sleep, or other AdvancedConfiguration Power Interface like state) in light of the activity (orinactivity) occurring in the given unit. Each of domains 1230 and 1260may operate at different voltage and/or power, and furthermore theindividual units within the domains each potentially operate at anindependent frequency and voltage. Note that while only shown with threedomains, understand the scope of the present invention is not limited inthis regard and additional domains may be present in other embodiments.

As shown, each core 1230 further includes low level caches in additionto various execution units and additional processing elements. Here, thevarious cores are coupled to each other and to a shared cache memorythat is formed of a plurality of units or slices of a last level cache(LLC) 1240A-1240N; these LLCs often include storage and cache controllerfunctionality and are shared amongst the cores, as well as potentiallyamong the graphics engine too.

As seen, a ring interconnect 1250 couples the cores together, andprovides interconnection between the core domain 1230, graphics domain1260 and system agent circuitry 1210, via a plurality of ring stops1252A-1252N, each at a coupling between a core and LLC slice. As seen inFIG. 12, interconnect 1250 is used to carry various information,including address information, data information, acknowledgementinformation, and snoop/invalid information. Although a ring interconnectis illustrated, any known on-die interconnect or fabric may be utilized.As an illustrative example, some of the fabrics discussed above (e.g.another on-die interconnect, On-chip System Fabric (OSF), an AdvancedMicrocontroller Bus Architecture (AMBA) interconnect, amulti-dimensional mesh fabric, or other known interconnect architecture)may be utilized in a similar fashion.

As further depicted, system agent domain 1210 includes display engine1212 which is to provide control of and an interface to an associateddisplay. System agent domain 1210 may include other units, such as: anintegrated memory controller 1220 that provides for an interface to asystem memory (e.g., a DRAM implemented with multiple DIMMs; coherencelogic 1222 to perform memory coherence operations. Multiple interfacesmay be present to enable interconnection between the processor and othercircuitry. For example, in one embodiment at least one direct mediainterface (DMI) 1216 interface is provided as well as one or more PCIe™interfaces 1214. The display engine and these interfaces typicallycouple to memory via a PCIe™ bridge 1218. Still further, to provide forcommunications between other agents, such as additional processors orother circuitry, one or more other interfaces may be provided.

Referring now to FIG. 13, shown is a block diagram of a representativecore; specifically, logical blocks of a back-end of a core, such as core1230 from FIG. 12. In general, the structure shown in FIG. 13 includesan out-of-order processor that has a front end unit 1370 used to fetchincoming instructions, perform various processing (e.g. caching,decoding, branch predicting, etc.) and passing instructions/operationsalong to an out-of-order (OOO) engine 1380. OOO engine 1380 performsfurther processing on decoded instructions.

Specifically in the embodiment of FIG. 13, out-of-order engine 1380includes an allocate unit 1382 to receive decoded instructions, whichmay be in the form of one or more micro-instructions or uops, from frontend unit 1370, and allocate them to appropriate resources such asregisters and so forth. Next, the instructions are provided to areservation station 1384, which reserves resources and schedules themfor execution on one of a plurality of execution units 1386A-1386N.Various types of execution units may be present, including, for example,arithmetic logic units (ALUs), load and store units, vector processingunits (VPUs), floating point execution units, among others. Results fromthese different execution units are provided to a reorder buffer (ROB)1388, which take unordered results and return them to correct programorder.

Still referring to FIG. 13, note that both front end unit 1370 andout-of-order engine 1380 are coupled to different levels of a memoryhierarchy. Specifically shown is an instruction level cache 1372, thatin turn couples to a mid-level cache 1376, that in turn couples to alast level cache 1395. In one embodiment, last level cache 1395 isimplemented in an on-chip (sometimes referred to as uncore) unit 1390.As an example, unit 1390 is similar to system agent 1210 of FIG. 12. Asdiscussed above, uncore 1390 communicates with system memory 1399,which, in the illustrated embodiment, is implemented via ED RAM. Notealso that the various execution units 1386 within out-of-order engine1380 are in communication with a first level cache 1374 that also is incommunication with mid-level cache 1376. Note also that additional cores1330N-2-1330N can couple to LLC 1395. Although shown at this high levelin the embodiment of FIG. 13, understand that various alterations andadditional components may be present.

Turning to FIG. 14, a block diagram of an exemplary computer systemformed with a processor that includes execution units to execute aninstruction, where one or more of the interconnects implement one ormore features in accordance with one embodiment of the present inventionis illustrated. System 1400 includes a component, such as a processor1402 to employ execution units including logic to perform algorithms forprocess data, in accordance with the present invention, such as in theembodiment described herein. System 1400 is representative of processingsystems based on the PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™and/or StrongARM™ microprocessors, although other systems (including PCshaving other microprocessors, engineering workstations, set-top boxesand the like) may also be used. In one embodiment, sample system 1400executes a version of the WINDOWS™ operating system available fromMicrosoft Corporation of Redmond, Wash., although other operatingsystems (UNIX and Linux for example), embedded software, and/orgraphical user interfaces, may also be used. Thus, embodiments of thepresent invention are not limited to any specific combination ofhardware circuitry and software.

Embodiments are not limited to computer systems. Alternative embodimentsof the present invention can be used in other devices such as handhelddevices and embedded applications. Some examples of handheld devicesinclude cellular phones, Internet Protocol devices, digital cameras,personal digital assistants (PDAs), and handheld PCs. Embeddedapplications can include a micro controller, a digital signal processor(DSP), system on a chip, network computers (NetPC), set-top boxes,network hubs, wide area network (WAN) switches, or any other system thatcan perform one or more instructions in accordance with at least oneembodiment.

In this illustrated embodiment, processor 1402 includes one or moreexecution units 1408 to implement an algorithm that is to perform atleast one instruction. One embodiment may be described in the context ofa single processor desktop or server system, but alternative embodimentsmay be included in a multiprocessor system. System 1400 is an example ofa ‘hub’ system architecture. The computer system 1400 includes aprocessor 1402 to process data signals. The processor 1402, as oneillustrative example, includes a complex instruction set computer (CISC)microprocessor, a reduced instruction set computing (RISC)microprocessor, a very long instruction word (VLIW) microprocessor, aprocessor implementing a combination of instruction sets, or any otherprocessor device, such as a digital signal processor, for example. Theprocessor 1402 is coupled to a processor bus 1410 that transmits datasignals between the processor 1402 and other components in the system1400. The elements of system 1400 (e.g. graphics accelerator 1412,memory controller hub 1416, memory 1420, I/O controller hub 1424,wireless transceiver 1426, Flash BIOS 1428, Network controller 1434,Audio controller 1436, Serial expansion port 1438, I/O controller 1440,etc.) perform their conventional functions that are well known to thosefamiliar with the art.

In one embodiment, the processor 1402 includes a Level 1 (L1) internalcache memory 1404. Depending on the architecture, the processor 1402 mayhave a single internal cache or multiple levels of internal caches.Other embodiments include a combination of both internal and externalcaches depending on the particular implementation and needs. Registerfile 1406 is to store different types of data in various registersincluding integer registers, floating point registers, vector registers,banked registers, shadow registers, checkpoint registers, statusregisters, and instruction pointer register.

Execution unit 1408, including logic to perform integer and floatingpoint operations, also resides in the processor 1402. The processor1402, in one embodiment, includes a microcode (ucode) ROM to storemicrocode, which when executed, is to perform algorithms for certainmacroinstructions or handle complex scenarios. Here, microcode ispotentially updateable to handle logic bugs/fixes for processor 1402.For one embodiment, execution unit 1408 includes logic to handle apacked instruction set 1409. By including the packed instruction set1409 in the instruction set of a general-purpose processor 1402, alongwith associated circuitry to execute the instructions, the operationsused by many multimedia applications may be performed using packed datain a general-purpose processor 1402. Thus, many multimedia applicationsare accelerated and executed more efficiently by using the full width ofa processor's data bus for performing operations on packed data. Thispotentially eliminates the need to transfer smaller units of data acrossthe processor's data bus to perform one or more operations, one dataelement at a time.

Alternate embodiments of an execution unit 1408 may also be used inmicro controllers, embedded processors, graphics devices, DSPs, andother types of logic circuits. System 1400 includes a memory 1420.Memory 1420 includes a dynamic random access memory (DRAM) device, astatic random access memory (SRAM) device, flash memory device, or othermemory device. Memory 1420 stores instructions and/or data representedby data signals that are to be executed by the processor 1402.

Note that any of the aforementioned features or aspects of the inventionmay be utilized on one or more interconnect illustrated in FIG. 14. Forexample, an on-die interconnect (ODI), which is not shown, for couplinginternal units of processor 1402 implements one or more aspects of theinvention described above. Or the invention is associated with aprocessor bus 1410 (e.g. other known high performance computinginterconnect), a high bandwidth memory path 1418 to memory 1420, apoint-to-point link to graphics accelerator 1412 (e.g. a PeripheralComponent Interconnect express (PCIe) compliant fabric), a controllerhub interconnect 1422, an I/O or other interconnect (e.g. USB, PCI,PCIe) for coupling the other illustrated components. Some examples ofsuch components include the audio controller 1436, firmware hub (flashBIOS) 1428, wireless transceiver 1426, data storage 1424, legacy I/Ocontroller 1410 containing user input and keyboard interfaces 1442, aserial expansion port 1438 such as Universal Serial Bus (USB), and anetwork controller 1434. The data storage device 1424 can comprise ahard disk drive, a floppy disk drive, a CD-ROM device, a flash memorydevice, or other mass storage device.

Referring now to FIG. 15, shown is a block diagram of a second system1500 in accordance with an embodiment of the present invention. As shownin FIG. 15, multiprocessor system 1500 is a point-to-point interconnectsystem, and includes a first processor 1570 and a second processor 1580coupled via a point-to-point interconnect 1550. Each of processors 1570and 1580 may be some version of a processor. In one embodiment, 1552 and1554 are part of a serial, point-to-point coherent interconnect fabric,such as a high-performance architecture. As a result, the invention maybe implemented within the QPI architecture.

While shown with only two processors 1570, 1580, it is to be understoodthat the scope of the present invention is not so limited. In otherembodiments, one or more additional processors may be present in a givenprocessor.

Processors 1570 and 1580 are shown including integrated memorycontroller units 1572 and 1582, respectively. Processor 1570 alsoincludes as part of its bus controller units point-to-point (P-P)interfaces 1576 and 1578; similarly, second processor 1580 includes P-Pinterfaces 1586 and 1588. Processors 1570, 1580 may exchange informationvia a point-to-point (P-P) interface 1550 using P-P interface circuits1578, 1588. As shown in FIG. 15, IMCs 1572 and 1582 couple theprocessors to respective memories, namely a memory 1532 and a memory1534, which may be portions of main memory locally attached to therespective processors.

Processors 1570, 1580 each exchange information with a chipset 1590 viaindividual P-P interfaces 1552, 1554 using point to point interfacecircuits 1576, 1594, 1586, 1598. Chipset 1590 also exchanges informationwith a high-performance graphics circuit 1538 via an interface circuit1592 along a high-performance graphics interconnect 1539.

A shared cache (not shown) may be included in either processor oroutside of both processors; yet connected with the processors via P-Pinterconnect, such that either or both processors' local cacheinformation may be stored in the shared cache if a processor is placedinto a low power mode.

Chipset 1590 may be coupled to a first bus 1516 via an interface 1596.In one embodiment, first bus 1516 may be a Peripheral ComponentInterconnect (PCI) bus, or a bus such as a PCI Express bus or anotherthird generation I/O interconnect bus, although the scope of the presentinvention is not so limited.

As shown in FIG. 15, various I/O devices 1514 are coupled to first bus1516, along with a bus bridge 1518 which couples first bus 1516 to asecond bus 1520. In one embodiment, second bus 1520 includes a low pincount (LPC) bus. Various devices are coupled to second bus 1520including, for example, a keyboard and/or mouse 1522, communicationdevices 1527 and a storage unit 1528 such as a disk drive or other massstorage device which often includes instructions/code and data 1530, inone embodiment. Further, an audio I/O 1524 is shown coupled to secondbus 1520. Note that other architectures are possible, where the includedcomponents and interconnect architectures vary. For example, instead ofthe point-to-point architecture of FIG. 15, a system may implement amulti-drop bus or other such architecture.

Turning next to FIG. 16, an embodiment of a system on-chip (SOC) designin accordance with the inventions is depicted. As a specificillustrative example, SOC 1600 is included in user equipment (UE). Inone embodiment, UE refers to any device to be used by an end-user tocommunicate, such as a hand-held phone, smartphone, tablet, ultra-thinnotebook, notebook with broadband adapter, or any other similarcommunication device. Often a UE connects to a base station or node,which potentially corresponds in nature to a mobile station (MS) in aGSM network.

Here, SOC 1600 includes 2 cores—1606 and 1607. Similar to the discussionabove, cores 1606 and 1607 may conform to an Instruction SetArchitecture, such as an Intel® Architecture Core™-based processor, anAdvanced Micro Devices, Inc. (AMD) processor, a MIPS-based processor, anARM-based processor design, or a customer thereof, as well as theirlicensees or adopters. Cores 1606 and 1607 are coupled to cache control1608 that is associated with bus interface unit 1609 and L2 cache 1611to communicate with other parts of system 1600. Interconnect 1610includes an on-chip interconnect, such as an IOSF, AMBA, or otherinterconnect discussed above, which potentially implements one or moreaspects of described herein.

Interconnect 1610 provides communication channels to the othercomponents, such as a Subscriber Identity Module (SIM) 1630 to interfacewith a SIM card, a boot rom 1635 to hold boot code for execution bycores 1606 and 1607 to initialize and boot SOC 1600, a SDRAM controller1640 to interface with external memory (e.g. DRAM 1660), a flashcontroller 1645 to interface with non-volatile memory (e.g. Flash 1665),a peripheral control 1650 (e.g. Serial Peripheral Interface) tointerface with peripherals, video codecs 1620 and Video interface 1625to display and receive input (e.g. touch enabled input), GPU 1615 toperform graphics related computations, etc. Any of these interfaces mayincorporate aspects of the invention described herein.

In addition, the system illustrates peripherals for communication, suchas a Bluetooth module 1670, 3G modem 1675, GPS 1685, and WiFi 1685. Noteas stated above, a UE includes a radio for communication. As a result,these peripheral communication modules are not all required. However, ina UE some form a radio for external communication is to be included.

While the present invention has been described with respect to a limitednumber of embodiments, those skilled in the art will appreciate numerousmodifications and variations therefrom. It is intended that the appendedclaims cover all such modifications and variations as fall within thetrue spirit and scope of this present invention.

A design may go through various stages, from creation to simulation tofabrication. Data representing a design may represent the design in anumber of manners. First, as is useful in simulations, the hardware maybe represented using a hardware description language or anotherfunctional description language. Additionally, a circuit level modelwith logic and/or transistor gates may be produced at some stages of thedesign process. Furthermore, most designs, at some stage, reach a levelof data representing the physical placement of various devices in thehardware model. In the case where conventional semiconductor fabricationtechniques are used, the data representing the hardware model may be thedata specifying the presence or absence of various features on differentmask layers for masks used to produce the integrated circuit. In anyrepresentation of the design, the data may be stored in any form of amachine readable medium. A memory or a magnetic or optical storage suchas a disc may be the machine readable medium to store informationtransmitted via optical or electrical wave modulated or otherwisegenerated to transmit such information. When an electrical carrier waveindicating or carrying the code or design is transmitted, to the extentthat copying, buffering, or re-transmission of the electrical signal isperformed, a new copy is made. Thus, a communication provider or anetwork provider may store on a tangible, machine-readable medium, atleast temporarily, an article, such as information encoded into acarrier wave, embodying techniques of embodiments of the presentinvention.

A module as used herein refers to any combination of hardware, software,and/or firmware. As an example, a module includes hardware, such as amicro-controller, associated with a non-transitory medium to store codeadapted to be executed by the micro-controller. Therefore, reference toa module, in one embodiment, refers to the hardware, which isspecifically configured to recognize and/or execute the code to be heldon a non-transitory medium. Furthermore, in another embodiment, use of amodule refers to the non-transitory medium including the code, which isspecifically adapted to be executed by the microcontroller to performpredetermined operations. And as can be inferred, in yet anotherembodiment, the term module (in this example) may refer to thecombination of the microcontroller and the non-transitory medium. Oftenmodule boundaries that are illustrated as separate commonly vary andpotentially overlap. For example, a first and a second module may sharehardware, software, firmware, or a combination thereof, whilepotentially retaining some independent hardware, software, or firmware.In one embodiment, use of the term logic includes hardware, such astransistors, registers, or other hardware, such as programmable logicdevices.

Use of the phrase ‘configured to,’ in one embodiment, refers toarranging, putting together, manufacturing, offering to sell, importingand/or designing an apparatus, hardware, logic, or element to perform adesignated or determined task. In this example, an apparatus or elementthereof that is not operating is still ‘configured to’ perform adesignated task if it is designed, coupled, and/or interconnected toperform said designated task. As a purely illustrative example, a logicgate may provide a 0 or a 1 during operation. But a logic gate‘configured to’ provide an enable signal to a clock does not includeevery potential logic gate that may provide a 1 or 0. Instead, the logicgate is one coupled in some manner that during operation the 1 or 0output is to enable the clock. Note once again that use of the term‘configured to’ does not require operation, but instead focus on thelatent state of an apparatus, hardware, and/or element, where in thelatent state the apparatus, hardware, and/or element is designed toperform a particular task when the apparatus, hardware, and/or elementis operating.

Furthermore, use of the phrases ‘to,’ ‘capable of/to,’ and or ‘operableto,’ in one embodiment, refers to some apparatus, logic, hardware,and/or element designed in such a way to enable use of the apparatus,logic, hardware, and/or element in a specified manner. Note as abovethat use of to, capable to, or operable to, in one embodiment, refers tothe latent state of an apparatus, logic, hardware, and/or element, wherethe apparatus, logic, hardware, and/or element is not operating but isdesigned in such a manner to enable use of an apparatus in a specifiedmanner.

A value, as used herein, includes any known representation of a number,a state, a logical state, or a binary logical state. Often, the use oflogic levels, logic values, or logical values is also referred to as 1'sand 0's, which simply represents binary logic states. For example, a 1refers to a high logic level and 0 refers to a low logic level. In oneembodiment, a storage cell, such as a transistor or flash cell, may becapable of holding a single logical value or multiple logical values.However, other representations of values in computer systems have beenused. For example the decimal number ten may also be represented as abinary value of 1010 and a hexadecimal letter A. Therefore, a valueincludes any representation of information capable of being held in acomputer system.

Moreover, states may be represented by values or portions of values. Asan example, a first value, such as a logical one, may represent adefault or initial state, while a second value, such as a logical zero,may represent a non-default state. In addition, the terms reset and set,in one embodiment, refer to a default and an updated value or state,respectively. For example, a default value potentially includes a highlogical value, i.e. reset, while an updated value potentially includes alow logical value, i.e. set. Note that any combination of values may beutilized to represent any number of states.

The embodiments of methods, hardware, software, firmware or code setforth above may be implemented via instructions or code stored on amachine-accessible, machine readable, computer accessible, or computerreadable medium which are executable by a processing element. Anon-transitory machine-accessible/readable medium includes any mechanismthat provides (i.e., stores and/or transmits) information in a formreadable by a machine, such as a computer or electronic system. Forexample, a non-transitory machine-accessible medium includesrandom-access memory (RAM), such as static RAM (SRAM) or dynamic RAM(DRAM); ROM; magnetic or optical storage medium; flash memory devices;electrical storage devices; optical storage devices; acoustical storagedevices; other form of storage devices for holding information receivedfrom transitory (propagated) signals (e.g., carrier waves, infraredsignals, digital signals); etc, which are to be distinguished from thenon-transitory mediums that may receive information there from.

Instructions used to program logic to perform embodiments of theinvention may be stored within a memory in the system, such as DRAM,cache, flash memory, or other storage. Furthermore, the instructions canbe distributed via a network or by way of other computer readable media.Thus a machine-readable medium may include any mechanism for storing ortransmitting information in a form readable by a machine (e.g., acomputer), but is not limited to, floppy diskettes, optical disks,Compact Disc, Read-Only Memory (CD-ROMs), and magneto-optical disks,Read-Only Memory (ROMs), Random Access Memory (RAM), ErasableProgrammable Read-Only Memory (EPROM), Electrically ErasableProgrammable Read-Only Memory (EEPROM), magnetic or optical cards, flashmemory, or a tangible, machine-readable storage used in the transmissionof information over the Internet via electrical, optical, acoustical orother forms of propagated signals (e.g., carrier waves, infraredsignals, digital signals, etc.). Accordingly, the computer-readablemedium includes any type of tangible machine-readable medium suitablefor storing or transmitting electronic instructions or information in aform readable by a machine (e.g., a computer).

The following examples pertain to embodiments in accordance with thisSpecification. One or more embodiments may provide an apparatus, asystem, a machine readable storage, a machine readable medium, and amethod to generate a set of training sequences, each training sequenceis to include a respective training sequence header, and the trainingsequence header is to be DC-balanced over the set of training sequences.

In at least one example, the set of training sequences are to beincluded in a supersequence.

In at least one example, the supersequence comprises a repeatingsequence comprising an electrical ordered set (EOS) followed by aplurality of training sequences.

In at least one example, the supersequence is a particular one of aplurality of supersequence types, each supersequence type correspondingto one or more respective states of a serial data link.

In at least one example, the plurality of supersequence types comprise adetect supersequence corresponding to a detect state, a secondsupersequence corresponding to one of a set of states comprising aloopback state, a configuration state, and a polling state, and apartial width exit supersequence corresponding to an exit from a partialwidth transmitting state.

In at least one example, the repeating sequence of the detectsupersequence comprises an EOS comprising an electric idle exit orderedset (EIEOS) followed by seven consecutive instances of a trainingsequence, wherein the sequence is to be repeated approximately onceevery one-thousand unit intervals.

In at least one example, the repeating sequence of the secondsupersequence comprises an EOS comprising an electric idle exit orderedset (EIEOS) followed by thirty-one consecutive instances of a trainingsequence, wherein the sequence is to be repeated approximately onceevery four thousand unit intervals.

In at least one example, the repeating sequence of the partial widthexit supersequence comprises an EOS comprising an electric idle exitordered set (EIEOS) followed by seven consecutive instances of a fasttraining sequence, wherein the sequence is to be repeated approximatelyonce every one thousand unit intervals.

In at least one example, wherein the training sequences each include atraining sequence payload, the training sequence payload is to bescrambled, and the training sequence header is to be unscrambled.

In at least one example, the EOS is to be unscrambled.

In at least one example, the training sequence payload is to bescrambled using a pseudorandom binary sequence (PRBS).

In at least one example, the header includes an ACK/NAK field and atraining sequence type field.

In at least one example, the training sequence type field is to beencoded to identify a training sequence type corresponding to arespective state of a serial data link.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive aset of training sequences, each training sequence is to include arespective training sequence header, the training sequence header is tobe DC-balanced over the set of training sequences, and the physicallayer logic is further to detect boundaries of one or more of thetraining sequence headers of the set of training sequence headers.

In at least one example, the set of training sequences are to bereceived as a portion of a supersequence, and the supersequencecomprises a repeating sequence comprising an electric idle exit orderedset (EIEOS) followed by a plurality of the training sequences used todetermine a state of the data link based on the supersequence.

In at least one example, the state is to be determined at least in partfrom a frequency at which the sequence is repeated in the supersequence.

In at least one example, the state is to be determined at least in partfrom a number of training sequences in the plurality.

In at least one example, the state is to be determined at least in partfrom training sequence header field information.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive arespective supersequence on each of a plurality of lanes, thesupersequence is to include an electrical ordered set followed by aplurality of training sequences, and detect a lane-to-lane skew betweenat least a first one of the plurality of lanes and second one of theplurality of lanes based on the supersequence.

In at least one example, each training sequence includes a trainingsequence header.

In at least one example, the skew is to be detected at least in partbased on an edge of the training sequence header.

In at least one example, the skew is to be detected based on anidentification that the edge arrives later on the second lane than onthe first lane.

In at least one example, the training sequence header is to be sentunscrambled and the remainder of the training sequence is to bescrambled.

In at least one example, at least a payload of the training sequence isto be scrambled.

In at least one example, the payload is to be scrambled using a 23-bitpseudorandom binary sequence (PRBS) having a 23-bit seed.

In at least one example, the seed of the PRBS can be detected from thesupersequence.

In at least one example, lane-to-lane skew can be remedied.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to generate asupersequence comprising two or more consecutive instances of a sequencecomprising an electrical ordered set (EOS) followed by a set of trainingsequences, wherein at least a portion of each training sequence is to bescrambled by a respective scrambling value.

In at least one example, a seed of the PRBS is identifiable from thescrambling synchronization field.

In at least one example, the seed indicates a particular portion of thePRBS utilized in the scrambling.

In at least one example, the scrambling synchronization field comprisesthree bytes of the payload.

In at least one example, the entirety of the PRBS is to be used in thescrambling.

In at least one example, less than the entirety of the PRBS is to beused in the scrambling.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receive asample signal for adaptation of a lane of a link connecting a firstdevice and a second device, wherein the signal comprises a supersequenceand at least a portion of the supersequence is to be scrambled by apseudorandom sequence, perform at least one adaptation task based on thesample signal.

The apparatus of Claim 68, wherein the supersequence is to include anelectrical ordered set (EOS) followed by a plurality of consecutivetraining sequences.

In at least one example, the at least one adaptation task includesdetermining quality of the lane from the sample signal.

In at least one example, the at least one adaptation task furtherincludes providing feedback to a transmitter of the sample signal basedon determining the quality of the lane.

In at least one example, the at least one adaptation task furtherincludes modifying characteristics of the lane based on determining thequality of the lane.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to generatesupersequences in an initialization state, each supersequence comprisinga sequence comprising an electrical ordered set (EOS) followed by a setof training sequences, wherein each training sequence includes a suffix,and send a start of data sequence (SDS) to indicate transition from theinitialization state to a transmitting link state.

In at least one example, the suffix is to prevent aliasing of the SDS bythe pseudorandom value.

In at least one example, the value of SDS is not included in thepseudorandom value.

In at least one example, the pseudo random value comprises apseudorandom binary sequence (PRBS) generated by a linear feedback shiftregister (LFSR).

In at least one example, the EIEOS emulates a low frequency clock signaland the SDS emulates a clock signal of a frequency higher than the lowfrequency clock signal.

In at least one example, the SDS is to be sent to interrupt thesupersequence.

In at least one example, the SDS is to be sent within a particular oneof the training sequences.

In at least one example, the SDS is to be sent within a particularinstance of the EOS.

In at least one example, the SDS is to be sent based on a deterministicalignment control signal.

One or more embodiments may provide an apparatus, a system, a machinereadable storage, a machine readable medium, and a method to receivesupersequences in an initialization state, each supersequence comprisinga sequence comprising an electrical ordered set (EOS) followed by a setof training sequences, wherein each training sequence includes a suffix,and receive a start of data sequence (SDS) to indicate transition fromthe initialization state to a transmitting link state.

In at least one example, the SDS is to be sent based on a deterministicalignment control signal.

One or more examples can further provide a physical layer (PHY)configured to be coupled to a link, the link including a first number oflanes, wherein the PHY is to include a self-seeded storage element togenerate a 23-bit Pseudo Random Bit Sequence (PRBS), wherein the PHY isto transmit a training sequence scrambled based on the 23-bit PRBS.

Reference throughout this specification to “one embodiment” or “anembodiment” means that a particular feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment of the present invention. Thus, theappearances of the phrases “in one embodiment” or “in an embodiment” invarious places throughout this specification are not necessarily allreferring to the same embodiment. Furthermore, the particular features,structures, or characteristics may be combined in any suitable manner inone or more embodiments.

In the foregoing specification, a detailed description has been givenwith reference to specific exemplary embodiments. It will, however, beevident that various modifications and changes may be made theretowithout departing from the broader spirit and scope of the invention asset forth in the appended claims. The specification and drawings are,accordingly, to be regarded in an illustrative sense rather than arestrictive sense. Furthermore, the foregoing use of embodiment andother exemplarily language does not necessarily refer to the sameembodiment or the same example, but may refer to different and distinctembodiments, as well as potentially the same embodiment.

What is claimed is:
 1. An apparatus comprising: protocol layer logic, link layer logic, and physical layer logic; the physical layer logic implemented at least in part in hardware to generate a sequence of bits to comprise two or more immediately repeating instances of a training sequence, wherein the training sequence is to comprise a header, a target latency value, and a scrambler synchronization value.
 2. The apparatus of claim 1, wherein the header is to include an indication of a type of the training sequence and lane numbering for the training sequence.
 3. The apparatus of claim 1, wherein the sequence of bits further comprises an ordered set preceding the two or more immediately repeating instances of a training sequence in the sequence of bits.
 4. The apparatus of claim 3, wherein the ordered set comprises an electrical idle exit ordered set (EIEOS).
 5. The apparatus of claim 4, wherein the EIEOS is to comprise sixteen bytes, bytes 0, 2, 4, 6, 8, 10, 12, and 14 of the EIEOS are to have a value 0x00, bytes 1, 3, 5, 7, 9, 11, 13, 15 of the EIEOS are to have a value 0FF.
 6. The apparatus of claim 1, wherein the training sequence is to comprise sixteen bytes.
 7. The apparatus of claim 1, wherein the training sequences in the sequence of bits are one of a plurality of training sequence types.
 8. The apparatus of claim 7, wherein the plurality of training sequence types comprise polling, configuration, and loopback.
 9. The apparatus of claim 7, wherein the header of the training sequences indicate the type.
 10. The apparatus of claim 1, wherein the two or more repeated instance of the training sequences are to be scrambled by a pseudorandom binary sequence (PRBS).
 11. The apparatus of claim 10, wherein the PRBS comprises PRBS23.
 12. The apparatus of claim 10, further comprising a linear feedback shift register to generate the PRBS.
 13. An apparatus comprising: a receiver to receive a sequence of bits, wherein the sequence of bits comprises: an electrical ordered set followed by two or more immediate repetitions of a training sequence, wherein each of the training sequences in the sequence are the same one of a plurality of types, the type is indicated in a header of the training sequences, and the training sequences further include a target latency value and a scrambler synchronization value.
 14. The apparatus of claim 13, wherein the two or more immediate repetitions of the training sequence are to be scrambled by a pseudorandom binary sequence (PRBS) and the electrical ordered set is unscrambled.
 15. The apparatus of claim 13, further comprising physical layer logic to determine a link state transition from the sequence of bits.
 16. The apparatus of claim 13, wherein the electrical ordered set is aligned with a sync counter.
 17. The apparatus of claim 13, further comprising at least one processor.
 18. The apparatus of claim 13, wherein the electrical ordered set comprises an electrical idle exit ordered set (EIEOS).
 19. The apparatus of claim 13, further comprising a transmitter to send the sequence of bits.
 20. An apparatus comprising: protocol layer logic, link layer logic, and physical layer logic; the physical layer logic to generate a sequence to comprise an electrical idle exit ordered set (EIEOS) and two or more repeated instances of a training sequence, wherein the sequence is to repeat according to a frequency, the EIEOS is to comprise sixteen bytes, bytes 0, 2, 4, 6, 8, 10, 12, and 14 of the EIEOS are to have a value 0x00, bytes 1, 3, 5, 7, 9, 11, 13, 15 of the EIEOS are to have a value 0xFF, the training sequence is to comprise sixteen bytes and indicate a lane numbering value, a target latency value, a training sequence type value, and a scrambler synchronization value, the training sequence type value is to indicate one or a plurality of training sequence types and the plurality of training sequence types comprise polling, configuration, and loopback, and the two or more repeated instance of the training sequences are to be scrambled by a pseudorandom binary sequence (PRBS).
 21. The apparatus of claim 20, wherein the physical layer logic is implemented at least in part in hardware.
 22. An apparatus comprising: a controller to interface between at least a first processor to recognize a first instruction set and second processor to recognize a second instruction set that is different from the first instruction set, the controller comprising protocol layer logic, link layer logic, and physical layer logic; the physical layer logic to generate a sequence to comprise two or more repeated instances of a training sequence, wherein the training sequence is to comprise a header, a target latency value, and a scrambler synchronization value.
 23. A system comprising: a cache-coherent, link-based interconnect; a first device; and a second device communicatively coupled to the first device using the interconnect, the second device comprising: physical layer logic implemented at least in part in hardware to generate a sequence of bits to comprise two or more immediately repeating instances of a training sequence, wherein the training sequence is to comprise a header, a target latency value, and a scrambler synchronization value; a transmitter to send the sequence of bits to the first device.
 24. The system of claim 23, wherein the system comprises a system-on-chip (SOC).
 25. The system of claim 23, wherein the second device comprises a microprocessor.
 26. The system of claim 25, wherein the first device comprises a second microprocessor.
 27. The system of claim 25, wherein the first device comprises a graphics accelerator. 